Function at 0x40ad80
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x60
push ebx
mov ebx, dword [esp + 0x70]
push ebp
push esi
mov ebp, ecx
mov esi, ebx
push edi
mov edi, dword [esp + 0x78]
mov edx, edi
test ebp, ebp
jne 0x40ada3
mov dword [esp + 0x54], 0xfffffbcc
jmp 0x40adb3
lea eax, [ebp - 0x435]
or esi, 0x100000
mov dword [esp + 0x54], eax
mov eax, edx
mov byte [esp + 0x17], 1
and eax, 1
or eax, 0
je 0x40adc7
mov byte [esp + 0x17], 0
mov eax, edx
mov ecx, esi
shld ecx, eax, 2
shl eax, 2
or edi, ebx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
jne 0x40ade7
mov dword [esp + 0x34], edi
cmp ebp, 1
ja 0x40adef
mov dword [esp + 0x34], 1
mov ebx, dword [esp + 0x54]
xor ah, ah
shld esi, edx, 1
mov byte [esp + 0x78], 0
add edx, edx
mov byte [esp + 0x15], ah
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], edx
test ebx, ebx
js 0x40b36d
xor eax, eax
imul ecx, ebx, 0x13441
shr ecx, 0x12
cmp ebx, 3
setg al
sub ecx, eax
imul eax, ecx, 0x12934f
mov ebp, ecx
shl ebp, 4
add ebp, 0x500708
mov dword [esp + 0x30], ecx
shr eax, 0x13
sub eax, ebx
mov edi, dword [ebp]
add eax, ecx
mov dword [esp + 0x44], edi
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 4]
mov dword [esp + 0x48], eax
mov eax, edi
mul edx
mov ebx, eax
mov ecx, edx
mov eax, edi
mul esi
mov esi, eax
mov edi, edx
mov eax, dword [ebp + 4]
add esi, ecx
adc edi, 0
mul dword [esp + 0x3c]
add eax, esi
mov ecx, edx
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x38]
mov dword [esp + 0x2c], eax
mov eax, edx
mov edx, dword [esp + 0x2c]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x2c], edx
mov dword [esp + 0x60], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x24], eax
mov eax, edi
mul dword [esp + 0x3c]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x38]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x24]
add esi, ecx
adc edi, 0
mul dword [esp + 0x3c]
add eax, esi
mov ecx, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
adc ecx, 0
mul dword [esp + 0x38]
mov ebp, eax
add ebp, ecx
mov ecx, dword [esp + 0x2c]
adc edx, 0
add ebp, edi
adc edx, 0
xor edi, edi
or edi, ebx
mov ebx, dword [esp + 0x18]
add edi, ecx
adc ebx, dword [esp + 0x60]
mov dword [esp + 0x64], edi
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x60]
ja 0x40af22
jb 0x40af1b
cmp edi, ecx
jae 0x40af22
mov eax, 1
jmp 0x40af24
xor eax, eax
add ebp, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], ebp
adc edx, 0
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x40]
mov esi, edx
add esi, dword [esp + 0x44]
adc eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
ja 0x40af56
jb 0x40af4f
cmp esi, edx
jae 0x40af56
mov eax, 1
jmp 0x40af58
xor eax, eax
xor ebp, ebp
add eax, edi
adc ebp, ebx
add eax, dword [esp + 0x4c]
adc ebp, dword [esp + 0x24]
cmp ebp, ebx
ja 0x40af77
jb 0x40af70
cmp eax, edi
jae 0x40af77
mov eax, 1
jmp 0x40af79
xor eax, eax
mov esi, dword [esp + 0x1c]
mov ecx, 7
sub ecx, dword [esp + 0x1c]
add esi, 0x19
mov dword [esp + 0x50], ecx
xor edx, edx
mov ecx, esi
mov dword [esp + 0x54], esi
shr ebp, cl
xor esi, esi
add eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x50]
adc edx, dword [esp + 0x3c]
call fcn.004f5620
or ebp, eax
or esi, edx
cmp dword [esp + 0x34], 1
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x20], esi
jne 0x40b034
mov edx, dword [esp + 0x40]
mov esi, edx
sub esi, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
jb 0x40afe2
ja 0x40afdb
cmp esi, edx
jbe 0x40afe2
mov ecx, 1
jmp 0x40afe4
xor ecx, ecx
mov eax, edi
sub eax, ecx
sbb ebx, 0
sub eax, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x18]
jb 0x40b006
ja 0x40afff
cmp eax, edi
jbe 0x40b006
mov edx, 1
jmp 0x40b008
xor edx, edx
mov esi, dword [esp + 0x54]
xor edi, edi
mov eax, dword [esp + 0x38]
mov ecx, esi
shr ebx, cl
sub eax, edx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x50]
sbb edx, edi
call fcn.004f5620
or ebx, eax
or edi, edx
mov dword [esp + 0x1c], edi
jmp 0x40b116
mov ecx, dword [esp + 0x40]
mov esi, ecx
mov edx, dword [esp + 0x28]
shld edx, esi, 1
add esi, esi
mov dword [esp + 0x60], edx
cmp edx, dword [esp + 0x28]
ja 0x40b05b
jb 0x40b054
cmp esi, ecx
jae 0x40b05b
mov eax, 1
jmp 0x40b05d
xor eax, eax
mov ecx, edi
mov edi, ebx
shld edi, ecx, 1
add ecx, ecx
add ecx, eax
adc edi, 0
cmp edi, ebx
ja 0x40b07f
jb 0x40b078
cmp ecx, dword [esp + 0x64]
jae 0x40b07f
mov ebx, 1
jmp 0x40b081
xor ebx, ebx
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
shld eax, edx, 1
add edx, edx
add edx, ebx
adc eax, 0
mov dword [esp + 0x40], eax
mov eax, esi
sub eax, dword [esp + 0x44]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x60]
sbb eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x60]
jb 0x40b0bf
ja 0x40b0b8
cmp dword [esp + 0x64], esi
jbe 0x40b0bf
mov esi, 1
jmp 0x40b0c1
xor esi, esi
mov eax, ecx
mov ebx, edi
sub eax, esi
sbb ebx, 0
sub eax, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x24]
cmp ebx, edi
jb 0x40b0e3
ja 0x40b0dc
cmp eax, ecx
jbe 0x40b0e3
mov eax, 1
jmp 0x40b0e5
xor eax, eax
mov ecx, dword [esp + 0x1c]
xor esi, esi
mov edi, dword [esp + 0x40]
add ecx, 0x1a
shr ebx, cl
sub edx, eax
mov ecx, 6
mov eax, edx
sbb edi, esi
sub ecx, dword [esp + 0x1c]
mov edx, edi
call fcn.004f5620
or ebx, eax
or esi, edx
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x38]
mov ecx, esi
mov edx, dword [esp + 0x3c]
xor esi, esi
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
shr ebx, cl
mov ecx, dword [esp + 0x50]
call fcn.004f5620
or ebx, eax
or esi, edx
cmp dword [esp + 0x30], 0x15
mov dword [esp + 0x18], ebx
ja 0x40b1df
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x58]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x5c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x58]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
add ebx, edi
mov edi, dword [esp + 0x5c]
adc ecx, ecx
mul edi
add ebx, eax
adc ecx, edx
mov edx, dword [esp + 0x58]
shrd ebx, ecx, 2
mov ecx, edx
lea eax, [ebx + ebx*4]
sub ecx, eax
mov ecx, dword [esp + 0x30]
jne 0x40b1b9
push edi
push edx
call fcn.00409bc0
add esp, 8
mov byte [esp + 0x15], al
mov dword [esp + 0x24], 0
mov byte [esp + 0x16], 0
jmp 0x40b1fc
cmp byte [esp + 0x17], 0
je 0x40b34a
sub edx, dword [esp + 0x34]
sbb edi, 0
add edx, 0xffffffff
adc edi, 0xffffffff
push edi
push edx
call fcn.00409bc0
add esp, 8
mov byte [esp + 0x78], al
mov al, byte [esp + 0x15]
mov cl, byte [esp + 0x78]
mov dword [esp + 0x24], 0
mov byte [esp + 0x16], 0
test cl, cl
jne 0x40b738
test al, al
jne 0x40b738
mov ebx, ebp
mov byte [esp + 0x78], 0
mov ebp, dword [esp + 0x20]
mov eax, 0x5c28f5c3
shrd ebx, ebp, 2
xor edi, edi
mul ebx
shr ebp, 2
mov eax, 0x5c28f5c3
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov eax, 0x28f5c28f
adc ebx, 0
xor ecx, ecx
add ebx, edi
adc ecx, ecx
mul ebp
mov ebp, dword [esp + 0x1c]
add ebx, eax
mov eax, 0x5c28f5c3
adc ecx, edx
xor edi, edi
shrd ebx, ecx, 2
mov dword [esp + 0x60], ebx
mov ebx, dword [esp + 0x28]
shrd ebx, ebp, 2
shr ecx, 2
mul ebx
mov dword [esp + 0x5c], ecx
mov eax, 0x5c28f5c3
shr ebp, 2
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov eax, 0x28f5c28f
adc ebx, 0
xor ecx, ecx
add ebx, edi
adc ecx, ecx
mul ebp
add ebx, eax
adc ecx, edx
shrd ebx, ecx, 2
shr ecx, 2
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x68], ecx
cmp dword [esp + 0x5c], ecx
jb 0x40bb0c
ja 0x40b2c3
cmp dword [esp + 0x60], ebx
jbe 0x40bb0c
mov ebx, dword [esp + 0x18]
mov eax, 0x5c28f5c3
shrd ebx, esi, 2
xor edi, edi
mov dword [esp + 0x24], 2
mul ebx
shr esi, 2
mov eax, 0x5c28f5c3
mov ebp, esi
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov ecx, dword [esp + 0x18]
mov eax, 0x28f5c28f
adc ebx, 0
xor esi, esi
add ebx, edi
adc esi, esi
mul ebp
mov ebp, dword [esp + 0x6c]
add ebx, eax
adc esi, edx
shrd ebx, esi, 2
imul eax, ebx, 0x64
shr esi, 2
mov dword [esp + 0x18], ebx
sub ecx, eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x2c], eax
cmp ecx, 0x32
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], eax
setae byte [esp + 0x78]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1c], eax
jmp 0x40bb14
add edx, 2
adc edi, 0
push edi
push edx
call fcn.00409bc0
movzx eax, al
add esp, 8
cdq
sub ebp, eax
mov dword [esp + 0x2c], ebp
sbb dword [esp + 0x20], edx
jmp 0x40b1df
xor ecx, ecx
mov eax, ebx
neg eax
mov ebp, 0x501948
cmp eax, 1
setg cl
imul edi, ebx, 0xfff4d105
shr edi, 0x14
sub edi, ecx
add ebx, edi
mov dword [esp + 0x6c], edi
imul eax, ebx, 0xffed6cb1
mov dword [esp + 0x30], ebx
shr eax, 0x13
sub edi, eax
mov eax, ebx
shl eax, 4
sub ebp, eax
mov dword [esp + 0x1c], edi
mov edi, dword [ebp]
mov eax, dword [ebp + 4]
mov dword [esp + 0x44], eax
mov eax, edi
mul edx
mov dword [esp + 0x48], edi
mov ebx, eax
mov ecx, edx
mov eax, edi
mul esi
mov esi, eax
mov edi, edx
mov eax, dword [ebp + 4]
add esi, ecx
adc edi, 0
mul dword [esp + 0x3c]
add eax, esi
mov ecx, edx
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x38]
mov dword [esp + 0x50], eax
mov eax, edx
mov edx, dword [esp + 0x50]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x50], edx
mov dword [esp + 0x64], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x24], eax
mov eax, edi
mul dword [esp + 0x3c]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x38]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x24]
add esi, ecx
adc edi, 0
mul dword [esp + 0x3c]
add eax, esi
mov ecx, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
adc ecx, 0
mul dword [esp + 0x38]
mov ebp, eax
add ebp, ecx
adc edx, 0
add ebp, edi
adc edx, 0
xor esi, esi
mov ecx, dword [esp + 0x50]
or esi, ebx
mov ebx, dword [esp + 0x18]
add esi, ecx
mov dword [esp + 0x68], esi
adc ebx, dword [esp + 0x64]
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x64]
ja 0x40b484
jb 0x40b47d
cmp esi, ecx
jae 0x40b484
mov eax, 1
jmp 0x40b486
xor eax, eax
mov ecx, dword [esp + 0x4c]
add ebp, eax
mov eax, dword [esp + 0x28]
mov edi, ecx
adc edx, 0
mov dword [esp + 0x3c], ebp
add edi, dword [esp + 0x48]
mov dword [esp + 0x38], edx
adc eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x28]
ja 0x40b4b8
jb 0x40b4b1
cmp edi, ecx
jae 0x40b4b8
mov ecx, 1
jmp 0x40b4ba
xor ecx, ecx
mov eax, esi
mov ebp, ebx
add eax, dword [esp + 0x40]
adc ebp, dword [esp + 0x24]
add eax, ecx
adc ebp, 0
cmp ebp, ebx
ja 0x40b4dc
jb 0x40b4d5
cmp eax, esi
jae 0x40b4dc
mov edx, 1
jmp 0x40b4de
xor edx, edx
mov edi, dword [esp + 0x1c]
mov eax, 9
sub eax, edi
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x3c]
lea ecx, [edi + 0x17]
xor edi, edi
shr ebp, cl
add eax, edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x60], ecx
adc edx, edi
mov ecx, dword [esp + 0x54]
call fcn.004f5620
or ebp, eax
or edi, edx
cmp dword [esp + 0x34], 1
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x20], edi
jne 0x40b59b
mov ecx, dword [esp + 0x4c]
mov edi, ecx
sub edi, dword [esp + 0x48]
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x28]
jb 0x40b545
ja 0x40b53e
cmp edi, ecx
jbe 0x40b545
mov ecx, 1
jmp 0x40b547
xor ecx, ecx
mov eax, esi
sub eax, dword [esp + 0x40]
sbb ebx, dword [esp + 0x24]
sub eax, ecx
sbb ebx, 0
cmp ebx, dword [esp + 0x18]
jb 0x40b569
ja 0x40b562
cmp eax, esi
jbe 0x40b569
mov edx, 1
jmp 0x40b56b
xor edx, edx
mov esi, dword [esp + 0x60]
xor edi, edi
mov eax, dword [esp + 0x3c]
mov ecx, esi
shr ebx, cl
sub eax, edx
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x54]
sbb edx, edi
call fcn.004f5620
or ebx, eax
or edi, edx
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x20]
jmp 0x40b69d
mov eax, dword [esp + 0x4c]
mov esi, eax
mov edx, dword [esp + 0x28]
shld edx, esi, 1
add esi, esi
mov dword [esp + 0x64], edx
cmp edx, dword [esp + 0x28]
ja 0x40b5c5
jb 0x40b5bb
cmp esi, eax
jae 0x40b5c5
mov dword [esp + 0x50], 1
jmp 0x40b5cd
mov dword [esp + 0x50], 0
mov edx, dword [esp + 0x68]
mov eax, ebx
mov ecx, edx
shld eax, ecx, 1
add ecx, ecx
add ecx, dword [esp + 0x50]
adc eax, 0
mov dword [esp + 0x28], eax
cmp eax, ebx
ja 0x40b5f7
jb 0x40b5f0
cmp ecx, edx
jae 0x40b5f7
mov ebx, 1
jmp 0x40b5f9
xor ebx, ebx
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
shld eax, edx, 1
add edx, edx
add edx, ebx
adc eax, 0
mov dword [esp + 0x50], eax
mov eax, esi
sub eax, dword [esp + 0x48]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x64]
sbb eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x64]
jb 0x40b63a
ja 0x40b630
cmp dword [esp + 0x68], esi
jbe 0x40b63a
mov dword [esp + 0x4c], 1
jmp 0x40b642
mov dword [esp + 0x4c], 0
mov ebx, dword [esp + 0x28]
mov esi, ecx
sub esi, dword [esp + 0x40]
sbb ebx, dword [esp + 0x24]
sub esi, dword [esp + 0x4c]
sbb ebx, 0
cmp ebx, dword [esp + 0x28]
jb 0x40b66a
ja 0x40b663
cmp esi, ecx
jbe 0x40b66a
mov eax, 1
jmp 0x40b66c
xor eax, eax
mov ecx, dword [esp + 0x1c]
xor esi, esi
add ecx, 0x18
shr ebx, cl
sub edx, eax
mov ecx, 8
mov eax, edx
sbb dword [esp + 0x50], esi
sub ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x50]
call fcn.004f5620
or ebx, eax
or esi, edx
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x3c]
mov ecx, esi
mov edx, dword [esp + 0x38]
xor esi, esi
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
shr ebx, cl
mov ecx, dword [esp + 0x54]
call fcn.004f5620
mov ecx, dword [esp + 0x6c]
or ebx, eax
or esi, edx
mov dword [esp + 0x18], ebx
cmp ecx, 1
ja 0x40b6fa
cmp byte [esp + 0x17], 0
mov al, 1
mov byte [esp + 0x15], al
je 0x40b6e7
mov cl, byte [esp + 0x34]
mov byte [esp + 0x78], cl
jmp 0x40b1e7
add ebp, 0xffffffff
mov dword [esp + 0x2c], ebp
adc edi, 0xffffffff
mov dword [esp + 0x20], edi
jmp 0x40b1e3
cmp ecx, 0x3f
jae 0x40b1df
dec ecx
mov eax, 1
xor edx, edx
call fcn.004f5620
add eax, 0xffffffff
mov dword [esp + 0x24], 0
adc edx, 0xffffffff
and eax, dword [esp + 0x58]
and edx, dword [esp + 0x5c]
or eax, edx
jne 0x40b204
mov byte [esp + 0x15], 1
mov byte [esp + 0x16], 0
mov eax, 0xcccccccd
xor edi, edi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
mov ebp, dword [esp + 0x28]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x20]
add ebx, eax
mov eax, 0xcccccccd
adc ecx, edx
add ebx, edi
adc ecx, 0
xor edi, edi
mul ebp
shrd ebx, ecx, 3
mov eax, 0xcccccccd
shr ecx, 3
mov dword [esp + 0x3c], ecx
mov ecx, edx
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x1c]
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x3c], eax
jb 0x40b948
ja 0x40b7f0
cmp dword [esp + 0x2c], ecx
jbe 0x40b948
jmp 0x40b7f0
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x18]
mov ebx, esi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x5c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor esi, esi
mul ebx
mov ebx, dword [esp + 0x20]
add ecx, eax
adc esi, edx
add ecx, edi
lea eax, [ebx + ebx*4]
adc esi, 0
add eax, eax
shrd ecx, esi, 3
shr esi, 3
cmp ebp, eax
mov dword [esp + 0x5c], ecx
mov ebp, ebx
setne al
mov edx, dword [esp + 0x5c]
dec al
and byte [esp + 0x78], al
cmp byte [esp + 0x16], 0
setne al
inc dword [esp + 0x24]
dec al
xor edi, edi
and byte [esp + 0x15], al
mov al, cl
shl al, 2
add cl, al
mov al, byte [esp + 0x18]
add cl, cl
mov dword [esp + 0x18], edx
sub al, cl
mov byte [esp + 0x16], al
mov eax, dword [esp + 0x58]
mov dword [esp + 0x1c], eax
mov eax, 0xcccccccd
mul dword [esp + 0x2c]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x3c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x2c]
add eax, ecx
mov dword [esp + 0x2c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x3c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x3c], eax
mov eax, 0xcccccccd
mul ebx
mov dword [esp + 0x2c], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x58]
add ecx, eax
adc edi, edx
mov eax, 0xcccccccc
mul ebx
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x58]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x3c], eax
ja 0x40b7f0
jb 0x40b940
cmp dword [esp + 0x2c], ecx
ja 0x40b7f0
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x28], ebp
mov dl, byte [esp + 0x78]
test dl, dl
je 0x40baa3
mov eax, 0xcccccccd
xor edi, edi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x1c]
add ebx, eax
mov eax, ebp
adc ecx, edx
add ebx, edi
adc ecx, 0
shrd ebx, ecx, 3
shr ecx, 3
mov dword [esp + 0x60], ecx
mov dword [esp + 0x3c], ebx
lea ecx, [ebx + ebx*4]
add ecx, ecx
sub eax, ecx
jne 0x40ba9f
mov ebp, ebx
mov dword [esp + 0x58], ebp
mov eax, 0xcccccccd
mov ebx, esi
mul dword [esp + 0x18]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x5c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor esi, esi
mul ebx
add ecx, eax
adc esi, edx
add ecx, edi
adc esi, 0
shrd ecx, esi, 3
shr esi, 3
cmp byte [esp + 0x16], 0
mov dword [esp + 0x5c], ecx
sete al
mov edx, dword [esp + 0x5c]
and byte [esp + 0x15], al
xor edi, edi
mov al, cl
inc dword [esp + 0x24]
shl al, 2
add cl, al
mov al, byte [esp + 0x18]
add cl, cl
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x3c]
sub al, cl
mov byte [esp + 0x16], al
mov ecx, edx
mov eax, dword [esp + 0x60]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, 0xcccccccd
mov dword [esp + 0x28], edx
mul ecx
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x58]
add eax, ecx
mov dword [esp + 0x3c], edx
mov ecx, edx
adc ecx, 0
xor eax, eax
mov eax, 0xcccccccc
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x60], eax
mov eax, ecx
mov dword [esp + 0x58], eax
mov dword [esp + 0x3c], ecx
lea eax, [eax + eax*4]
add eax, eax
sub ebp, eax
mov ebp, ecx
je 0x40b9b0
mov dl, byte [esp + 0x78]
cmp byte [esp + 0x15], 0
mov cl, byte [esp + 0x16]
je 0x40bac1
cmp cl, 5
jne 0x40bac1
mov eax, dword [esp + 0x18]
and eax, 1
or eax, 0
jne 0x40bac1
mov cl, 4
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x28]
jne 0x40badc
cmp esi, dword [esp + 0x1c]
jne 0x40badc
cmp byte [esp + 0x17], 0
je 0x40bae5
test dl, dl
je 0x40bae5
cmp cl, 5
jb 0x40bd13
mov edx, 1
mov ecx, dword [esp + 0x30]
xor edi, edi
add edx, eax
mov eax, dword [esp + 0x74]
adc edi, esi
add ecx, dword [esp + 0x24]
mov dword [eax + 4], edi
pop edi
pop esi
pop ebp
mov dword [eax + 8], ecx
mov dword [eax], edx
pop ebx
add esp, 0x60
ret
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x2c]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x2c]
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x3c], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x28], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x3c], eax
jb 0x40bcf6
ja 0x40bbd0
cmp dword [esp + 0x28], ecx
jbe 0x40bcf6
mov edi, edi
mov ebp, ebx
xor edi, edi
mov eax, 0xcccccccd
mov ebx, esi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x18], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor esi, esi
mul ebx
add ecx, eax
adc esi, edx
add ecx, edi
adc esi, 0
shrd ecx, esi, 3
shr esi, 3
mov dword [esp + 0x18], ecx
lea eax, [ecx + ecx*4]
add eax, eax
sub ebp, eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x1c], eax
cmp ebp, 5
mov eax, 0xcccccccd
mov ebp, dword [esp + 0x20]
setae byte [esp + 0x78]
inc dword [esp + 0x24]
mul dword [esp + 0x28]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x3c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x28]
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x3c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x3c], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x28], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x5c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x5c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
mov ebx, dword [esp + 0x18]
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x3c], eax
ja 0x40bbd0
jb 0x40bcf6
cmp dword [esp + 0x28], ecx
ja 0x40bbd0
mov eax, dword [esp + 0x18]
cmp eax, ebp
jne 0x40bd08
cmp esi, dword [esp + 0x1c]
je 0x40bae5
cmp byte [esp + 0x78], 0
jne 0x40bae5
xor edx, edx
jmp 0x40baea