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

Disassembly:
sub esp, 0x3cc
mov eax, dword [0x886f80]
xor eax, esp
mov dword [esp + 0x3c8], eax
mov eax, dword [esp + 0x3d8]
push ebx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x3e0]
push ebp
mov ebp, dword [esp + 0x3dc]
mov dword [esp + 0x78], eax
push esi
mov esi, dword [esp + 0x3dc]
mov al, byte [ebp + 0x2d]
movzx ecx, byte [ebp + 0x2c]
mov byte [esp + 0x84], al
movzx eax, al
mov dword [esp + 0x54], eax
shr eax, 3
imul eax, ecx
mov dword [esp + 0x90], ecx
imul ecx, dword [ebp + 0x18], 0x64
push edi
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x90], eax
movzx eax, byte [ecx + 0x519881]
mov ebx, dword [ebp + eax*4 + 0x30]
movzx eax, byte [ecx + 0x519882]
mov dword [esp + 0x54], ebx
mov eax, dword [ebp + eax*4 + 0x30]
mov dword [esp + 0x7c], eax
test eax, eax
je 0x499deb
bsf ecx, eax
je 0x499ddf
inc ecx
mov edi, 1
dec ecx
shl edi, cl
jmp 0x499ded
xor ecx, ecx
mov edi, 1
dec ecx
shl edi, cl
jmp 0x499ded
mov edi, ebx
push ebp
call fcn.0040fd90
push dword [esp + 0x84]
movups xmm0, xmmword [eax]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x44], eax
psrldq xmm0, 0xc
movd ecx, xmm0
mov ecx, dword [ecx]
cmp dword [ecx + 0xc], 5
sete byte [esp + 0x94]
push dword [esp + 0x94]
push dword [esp + 0x88]
push ebx
push dword [esp + 0x9c]
mov ebx, dword [esp + 0xa8]
push ebx
push dword [ebp + 0x18]
call dword [esp + 0xa4]
mov edx, dword [esp + 0x78]
add esp, 0x20
movzx ecx, al
cmp ecx, dword [esp + 0x94]
jne 0x499e70
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edx
jne 0x499e70
shr eax, 0x10
cmp eax, edi
ja 0x499e70
xor al, al
jmp 0x49ad7b
xor ebp, ebp
xor edi, edi
mov dword [esp + 0x40], ebp
mov dword [esp + 0x64], edi
test ebx, ebx
je 0x49ad49
mov eax, dword [esp + 0x7c]
xor edx, edx
mov ecx, dword [esp + 0x54]
add eax, edi
div ecx
sub ebx, edi
mov ebp, edx
mov dword [esp + 0x38], ebx
test ebp, ebp
je 0x499ebe
bsf ecx, ebp
je 0x499ea6
inc ecx
jmp 0x499ea8
xor ecx, ecx
dec ecx
mov edi, 1
shl edi, cl
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x64]
jmp 0x499ec2
mov dword [esp + 0x44], ecx
push dword [esp + 0x80]
mov eax, dword [esp + 0x60]
push dword [esp + 0x90]
push ebp
push ecx
push dword [esp + 0x98]
push ebx
push dword [eax + 0x18]
call dword [esp + 0xa0]
mov ecx, eax
add esp, 0x1c
mov ebx, ecx
mov dword [esp + 0x28], ecx
shr ebx, 0x10
mov dword [esp + 0x30], ebx
cmp dword [esp + 0x54], ebx
jae 0x49a7ec
mov eax, ebx
mov dword [esp + 0x14], 0
xor ebx, ebx
mov ebp, edi
add eax, 0xffffffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
adc ebx, 0xffffffff
mov dword [esp + 0x2c], ebx
cmp byte [eax + 0x11], 0x40
movzx edi, byte [eax + 0x11]
jne 0x499f36
or ecx, 0xffffffff
or edx, 0xffffffff
jmp 0x499f56
xor ecx, ecx
xor edx, edx
mov eax, edi
and eax, 0x3f
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
adc edx, 0xffffffff
and ebp, ecx
mov ecx, dword [esp + 0x14]
and ecx, edx
mov eax, ebp
or eax, ecx
jne 0x499f71
mov ebp, dword [esp + 0x3c]
lea eax, [esi + 0xc]
mov dword [esp + 0x1c], eax
jmp 0x499fc5
push edi
push ecx
push ebp
call fcn.0040f5b0
push edi
mov ebp, eax
mov dword [esp + 0x24], edx
lea eax, [esi + 0xc]
push 1
push dword [eax]
mov dword [esp + 0x34], eax
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
je 0x499fb0
mov eax, dword [esp + 0x14]
push edi
mov dword [edi + 0x30], ebp
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push edi
push dword [esp + 0x40]
push 0x10a
push esi
call fcn.0041cdb0
add esp, 0x10
mov ebp, eax
mov al, byte [ebp + 0x11]
movzx ecx, al
mov edi, ecx
mov byte [esp + 0x13], al
and edi, 0x3f
mov dword [esp + 0x34], ecx
cmp al, 0x40
jne 0x499fe4
or ecx, 0xffffffff
or edx, 0xffffffff
jmp 0x49a001
xor ecx, ecx
xor edx, edx
mov eax, edi
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
adc edx, 0xffffffff
and ecx, dword [esp + 0x20]
and edx, ebx
mov eax, ecx
or eax, edx
jne 0x49a05e
mov edi, dword [esp + 0x34]
push edi
push eax
push eax
call fcn.0040f5b0
mov ecx, dword [esp + 0x28]
push edi
push 1
mov dword [esp + 0x28], eax
push dword [ecx]
mov dword [esp + 0x3c], edx
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
jne 0x49a041
mov dword [esp + 0x18], eax
jmp 0x49a0bf
mov eax, dword [esp + 0x14]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x24]
push edi
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
lea eax, [edi + 0x18]
jmp 0x49a0bb
cmp byte [esp + 0x13], 0x40
jne 0x49a06d
or eax, 0xffffffff
or ebx, 0xffffffff
jmp 0x49a088
xor eax, eax
xor ebx, ebx
bts eax, edi
cmp edi, 0x20
cmovae ebx, eax
xor eax, ebx
cmp edi, 0x40
cmovae ebx, eax
add eax, 0xffffffff
adc ebx, 0xffffffff
cmp ecx, eax
jne 0x49a09a
cmp edx, ebx
jne 0x49a09a
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x18], ebp
jmp 0x49a0bf
mov edi, dword [esp + 0x34]
push edi
push edx
push ecx
push esi
call fcn.00410320
push eax
push ebp
push 0x10d
push esi
call fcn.0041cdb0
mov ebx, dword [esp + 0x4c]
add esp, 0x20
mov dword [esp + 0x18], eax
mov cl, byte [ebp + 0x11]
not ebx
mov eax, dword [esp + 0x20]
mov byte [esp + 0x13], cl
not eax
movzx ecx, cl
mov edx, ecx
mov dword [esp + 0x20], eax
and edx, 0x3f
mov dword [esp + 0x2c], ecx
cmp byte [esp + 0x13], 0x40
jne 0x49a0ed
or ecx, 0xffffffff
or edi, 0xffffffff
jmp 0x49a10e
xor ecx, ecx
mov eax, edx
bts ecx, eax
xor edi, edi
cmp eax, 0x20
cmovae edi, ecx
xor ecx, edi
cmp eax, 0x40
mov eax, dword [esp + 0x20]
cmovae edi, ecx
add ecx, 0xffffffff
adc edi, 0xffffffff
and eax, ecx
and ebx, edi
mov dword [esp + 0x20], eax
or eax, ebx
jne 0x49a15c
mov edi, dword [esp + 0x2c]
push edi
push eax
push eax
call fcn.0040f5b0
mov ebx, eax
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x28]
push edi
push 1
push dword [eax]
call fcn.004097b0
mov ebp, eax
add esp, 0x18
test ebp, ebp
je 0x49a1b1
mov eax, dword [esp + 0x14]
push ebp
mov dword [ebp + 0x30], ebx
push esi
mov dword [ebp + 0x34], eax
call fcn.0041d130
add esp, 8
add ebp, 0x18
jmp 0x49a1b1
cmp byte [esp + 0x13], 0x40
jne 0x49a16b
or eax, 0xffffffff
or ecx, 0xffffffff
jmp 0x49a186
xor eax, eax
xor ecx, ecx
bts eax, edx
cmp edx, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
cmovae ecx, eax
add eax, 0xffffffff
adc ecx, 0xffffffff
mov edx, dword [esp + 0x20]
cmp edx, eax
jne 0x49a192
cmp ebx, ecx
je 0x49a1b1
mov edi, dword [esp + 0x2c]
push edi
push ebx
push edx
push esi
call fcn.00410320
push eax
push ebp
push 0x10d
push esi
call fcn.0041cdb0
add esp, 0x20
mov ebp, eax
mov eax, dword [esp + 0x28]
movzx edi, ah
push edi
movzx ebx, al
push ebx
push 0
push 0
push dword [esp + 0x40]
push ebp
push dword [esp + 0x74]
push esi
call fcn.00499970
mov ecx, dword [esp + 0x64]
add esp, 0x20
imul ebx, edi
mov ebp, eax
shr ebx, 3
sub ebx, dword [esp + 0x30]
add ecx, ebx
mov ebx, dword [esp + 0x18]
cmp dword [esp + 0x38], ecx
cmovb ecx, dword [esp + 0x38]
mov al, byte [ebx + 0x11]
mov dword [esp + 0x20], ecx
mov byte [esp + 0x13], al
cmp al, 0x40
jne 0x49a20d
mov edx, 8
xor edi, edi
jmp 0x49a2a0
movzx ebx, al
xor edx, edx
xor ecx, ecx
mov eax, ebx
and eax, 0x3f
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
mov eax, dword [esp + 0x1c]
cmovae ecx, edx
mov dword [esp + 0x1c], eax
add edx, 0xffffffff
adc ecx, 0xffffffff
and edx, 8
xor edi, edi
mov dword [esp + 0x4c], ecx
mov eax, edx
or eax, edi
jne 0x49a29c
push ebx
push eax
push eax
call fcn.0040f5b0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
push ebx
push 1
mov dword [esp + 0x38], edx
push dword [eax]
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
jne 0x49a279
mov dword [esp + 0x18], eax
mov ebx, eax
jmp 0x49a301
mov eax, dword [esp + 0x14]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x24]
push edi
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
lea eax, [edi + 0x18]
add esp, 8
mov dword [esp + 0x18], eax
mov ebx, eax
jmp 0x49a301
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x49a2b3
cmp byte [eax + 0x1e], 0
jne 0x49a2dd
mov ecx, edx
mov eax, edi
add ecx, 0xffffffff
adc eax, 0xffffffff
and ecx, edx
and eax, edi
or ecx, eax
jne 0x49a2dd
push edi
push edx
call fcn.004624c0
dec eax
push eax
push esi
call fcn.004102d0
push eax
push ebx
push 0x139
jmp 0x49a2f2
movzx eax, byte [esp + 0x13]
push eax
push edi
push edx
push esi
call fcn.00410320
push eax
push ebx
push 0x127
push esi
call fcn.0041cdb0
mov ebx, eax
add esp, 0x20
mov dword [esp + 0x18], ebx
push ebx
lea eax, [ebp + 0x1c]
push eax
push 0x1ac
push esi
call fcn.0041cdb0
add esp, 0x10
mov edi, eax
cmp byte [ebp + 0x2c], 1
mov dword [esp + 0x1c], edi
jbe 0x49a48e
movzx edi, byte [ebx + 0x11]
movzx eax, byte [ebp + 0x2d]
cdq
push edi
push edx
push eax
call fcn.0040f5b0
push edi
push 1
push dword [esi + 0xc]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], edx
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
je 0x49a36c
mov eax, dword [esp + 0x14]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x24]
push edi
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push ebx
push edi
push 0x13c
push esi
call fcn.0041cdb0
push eax
lea eax, [ebp + 0x1c]
push eax
push 0x139
push esi
call fcn.0041cdb0
add esp, 0x20
mov dword [esp + 0x24], eax
cmp byte [ebp + 0x2c], 1
mov edi, 1
jbe 0x49a3cd
lea ebx, [esp + 0x98]
push 1
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], edi
push ecx
push eax
push esi
call fcn.004119a0
mov dword [ebx], eax
lea ebx, [ebx + 4]
movzx eax, byte [ebp + 0x2c]
inc edi
add esp, 0x10
cmp edi, eax
mov eax, dword [esp + 0x24]
jb 0x49a3a2
mov ebx, dword [esp + 0x18]
movzx eax, byte [ebp + 0x2d]
push eax
push 1
push dword [esi + 0xc]
call fcn.004097b0
mov edi, eax
push edi
push esi
call fcn.0041d130
movzx ecx, byte [ebp + 0x2c]
lea eax, [edi + 0x18]
add esp, 0x14
mov dword [esp + ecx*4 + 0x94], eax
lea eax, [esp + 0x98]
push eax
push ecx
call fcn.00409930
add esp, 4
push eax
push esi
call fcn.0041cf40
push eax
push dword [esp + 0x2c]
push 0x136
push esi
call fcn.0041cdb0
movzx edi, byte [ebx + 0x11]
push edi
push 0
push 0
mov dword [esp + 0x60], eax
call fcn.0040f5b0
push edi
push 1
push dword [esi + 0xc]
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], edx
call fcn.004097b0
mov edi, eax
add esp, 0x34
test edi, edi
je 0x49a467
mov eax, dword [esp + 0x14]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x24]
push edi
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push edi
push ebx
push 0x111
push esi
call fcn.0041cdb0
push dword [esp + 0x48]
lea ecx, [ebp + 0x1c]
push ecx
push eax
push 0x71
push esi
call fcn.0041ce20
mov edi, eax
add esp, 0x24
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0x20]
bsf ecx, edx
je 0x49a49a
inc ecx
jmp 0x49a49c
xor ecx, ecx
dec ecx
mov eax, 8
shl eax, cl
mov ecx, dword [esp + 0x58]
cmp eax, ecx
jae 0x49a4d0
bsf ecx, edx
je 0x49a4c0
inc ecx
mov ebx, 8
dec ecx
shl ebx, cl
mov dword [esp + 0x28], ebx
jmp 0x49a4d6
xor ecx, ecx
mov ebx, 8
dec ecx
shl ebx, cl
mov dword [esp + 0x28], ebx
jmp 0x49a4d6
mov ebx, ecx
mov dword [esp + 0x28], ecx
mov ecx, ebx
mov eax, edx
shr ecx, 3
xor edx, edx
div ecx
mov dword [esp + 0x14], eax
test eax, eax
je 0x49ad26
xor ecx, ecx
mov dword [esp + 0x18], ecx
movzx ebp, byte [edi + 0x11]
cmp ebx, ebp
cmovb ebp, ebx
mov dword [esp + 0x34], ebp
test ecx, ecx
je 0x49a538
bsf ecx, ecx
je 0x49a50c
inc ecx
jmp 0x49a50e
xor ecx, ecx
dec ecx
mov eax, 1
shl eax, cl
cmp ebp, eax
jb 0x49a534
mov eax, dword [esp + 0x18]
bsf ecx, eax
je 0x49a526
inc ecx
jmp 0x49a528
xor ecx, ecx
dec ecx
mov ebp, 1
shl ebp, cl
mov dword [esp + 0x34], ebp
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
xor edx, edx
div ebp
xor ebx, ebx
mov dword [esp + 0x44], 0
or edi, 0xffffffff
mov dword [esp + 0x38], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x2c], ebx
test eax, eax
je 0x49a764
mov edx, ecx
mov dword [esp + 0x60], ecx
nop dword [eax + eax]
cmp edx, ebx
jb 0x49a596
mov eax, dword [esp + edi*4 + 0x20]
inc edi
mov dword [esp + 0x44], ebx
movzx ecx, byte [eax + 0x11]
movzx eax, byte [eax + 0x10]
imul ecx, eax
add ebx, ecx
cmp edx, ebx
jae 0x49a574
mov dword [esp + 0x24], edi
mov dword [esp + 0x38], ebx
mov edi, dword [esp + edi*4 + 0x1c]
mov eax, edx
sub eax, dword [esp + 0x44]
xor edx, edx
mov dword [esp + 0x78], eax
push 1
movzx ecx, byte [edi + 0x11]
div ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x34], eax
lea eax, [esp + 0x34]
push eax
push edi
push esi
call fcn.004119a0
mov ebx, eax
add esp, 0x10
movzx eax, byte [edi + 0x11]
cmp eax, ebp
jbe 0x49a738
mov cl, byte [ebx + 0x11]
xor edx, edx
movzx eax, cl
div ebp
mov edi, eax
mov dword [esp + 0x70], edi
cmp cl, 0x20
je 0x49a60d
cmp cl, 0x40
jne 0x49a628
cmp ebp, 0x10
je 0x49a602
cmp ebp, 0x20
jne 0x49a628
push ebx
push 0x199
jmp 0x49a706
push ebx
push 0x19c
jmp 0x49a706
cmp ebp, 8
je 0x49a700
cmp ebp, 0x10
je 0x49a6f8
cmp ebp, 0x20
je 0x49a711
mov dword [esp + 0x30], 0
test edi, edi
je 0x49a6de
mov eax, ebp
or eax, 4
xor ebp, ebp
mov dword [esp + 0x74], eax
test ebp, ebp
jne 0x49a64b
mov eax, ebx
jmp 0x49a6ac
mov eax, ebp
cdq
push 0x20
push edx
push eax
call fcn.0040f5b0
push 0x20
push 1
push dword [esi + 0xc]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], edx
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
je 0x49a695
mov eax, dword [esp + 0x68]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x6c]
push edi
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push edi
push ebx
push 0x1ac
push esi
call fcn.0041cdb0
mov edi, dword [esp + 0x80]
add esp, 0x10
push 0
push dword [esp + 0x78]
push 4
push eax
push esi
call fcn.0041d640
mov ecx, dword [esp + 0x44]
add esp, 0x14
add ebp, dword [esp + 0x34]
mov dword [esp + ecx*4 + 0xd8], eax
inc ecx
mov dword [esp + 0x30], ecx
cmp ecx, edi
jb 0x49a643
mov ebp, dword [esp + 0x34]
lea eax, [esp + 0xd8]
push eax
push edi
call fcn.00409930
add esp, 4
push eax
push esi
call fcn.0041cf40
jmp 0x49a70c
push ebx
push 0x195
jmp 0x49a706
push ebx
push 0x198
push esi
call fcn.0041cd60
add esp, 0xc
mov ebx, eax
mov eax, dword [esp + 0x78]
xor edx, edx
div dword [esp + 0x50]
push 1
mov eax, edx
xor edx, edx
div ebp
mov dword [esp + 0x54], eax
lea eax, [esp + 0x54]
push eax
push ebx
push esi
call fcn.004119a0
add esp, 0x10
mov ebx, eax
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x24]
add edx, ebp
mov dword [esp + 0x60], edx
mov dword [esp + eax*4 + 0x1d8], ebx
inc eax
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x48]
jb 0x49a570
mov ebx, dword [esp + 0x28]
cmp ebx, ebp
jbe 0x49a7a5
xor edx, edx
lea ecx, [esp + 0x1d8]
mov eax, ebx
div ebp
push ecx
push eax
call fcn.00409930
add esp, 4
push eax
push esi
call fcn.0041cf40
push ebx
push eax
push esi
call fcn.004117e0
add esp, 0x18
mov dword [esp + 0x98], eax
lea edi, [esp + 0x98]
jmp 0x49a7ac
lea edi, [esp + 0x1d8]
push 1
call fcn.00409930
push edi
push eax
push esi
call fcn.0041cf40
mov ebp, dword [esp + 0x50]
add esp, 0x10
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
add ecx, ebx
mov dword [esp + 0x18], ecx
mov dword [esp + ebp*4 + 0x158], eax
inc ebp
sub dword [esp + 0x14], 1
mov dword [esp + 0x40], ebp
jne 0x49a4f3
jmp 0x49ad2a
xor edx, edx
mov dword [esp + 0x48], 0
mov eax, ebp
div ebx
mov eax, dword [esp + 0x3c]
mov ebx, edi
mov dword [esp + 0x50], edx
mov al, byte [eax + 0x11]
mov byte [esp + 0x13], al
test edx, edx
je 0x49ac56
sub ebx, edx
cmp al, 0x40
jne 0x49a821
or edx, 0xffffffff
or edi, 0xffffffff
jmp 0x49a842
xor edx, edx
movzx eax, al
and eax, 0x3f
xor edi, edi
bts edx, eax
cmp eax, 0x20
cmovae edi, edx
xor edx, edi
cmp eax, 0x40
cmovae edi, edx
add edx, 0xffffffff
adc edi, 0xffffffff
and ebx, edx
mov edx, dword [esp + 0x48]
and edx, edi
mov eax, ebx
or eax, edx
jne 0x49a856
mov eax, dword [esp + 0x3c]
jmp 0x49a8ab
movzx edi, byte [esp + 0x13]
push edi
push edx
push ebx
call fcn.0040f5b0
push edi
push 1
push dword [esi + 0xc]
mov ebx, eax
mov dword [esp + 0x60], edx
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
je 0x49a894
mov eax, dword [esp + 0x48]
push edi
mov dword [edi + 0x30], ebx
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push edi
push dword [esp + 0x40]
push 0x10a
push esi
call fcn.0041cdb0
mov ecx, dword [esp + 0x38]
add esp, 0x10
mov ebx, dword [esp + 0x50]
xor edx, edx
mov dword [esp + 0x14], eax
sub ebp, ebx
movzx eax, ch
push eax
mov dword [esp + 0x24], eax
mov eax, ebp
movzx edi, cl
mov ecx, dword [esp + 0x58]
div ecx
push edi
push 0
push edx
push ecx
push dword [esp + 0x28]
push dword [esp + 0x74]
push esi
call fcn.00499970
mov edx, dword [esp + 0x40]
add esp, 0x20
shr edx, 3
mov ebp, eax
imul edx, edi
sub edx, ebx
bsf ecx, edx
mov dword [esp + 0x20], edx
je 0x49a8fa
inc ecx
jmp 0x49a8fc
xor ecx, ecx
dec ecx
mov eax, 8
shl eax, cl
mov ecx, dword [esp + 0x58]
cmp eax, ecx
jae 0x49a930
bsf ecx, edx
je 0x49a920
inc ecx
mov eax, 8
dec ecx
shl eax, cl
mov dword [esp + 0x1c], eax
jmp 0x49a936
xor ecx, ecx
mov eax, 8
dec ecx
shl eax, cl
mov dword [esp + 0x1c], eax
jmp 0x49a936
mov eax, ecx
mov dword [esp + 0x1c], ecx
mov ecx, eax
mov eax, edx
xor edx, edx
shr ecx, 3
div ecx
lea edx, [ebp + 0x1c]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], edx
test eax, eax
je 0x49ad26
lea ecx, [ebx*8]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
movzx ebp, byte [edx + 0x11]
cmp ebx, ebp
cmovb ebp, ebx
mov dword [esp + 0x28], ebp
test ecx, ecx
je 0x49a9a8
bsf ecx, ecx
je 0x49a97c
inc ecx
jmp 0x49a97e
xor ecx, ecx
dec ecx
mov eax, 1
shl eax, cl
cmp ebp, eax
jb 0x49a9a4
mov eax, dword [esp + 0x18]
bsf ecx, eax
je 0x49a996
inc ecx
jmp 0x49a998
xor ecx, ecx
dec ecx
mov ebp, 1
shl ebp, cl
mov dword [esp + 0x28], ebp
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
xor edx, edx
div ebp
xor ebx, ebx
mov dword [esp + 0x14], 0
or edi, 0xffffffff
mov dword [esp + 0x44], ebx
mov dword [esp + 0x30], edi
mov dword [esp + 0x68], eax
mov dword [esp + 0x38], ebx
test eax, eax
je 0x49abce
mov edx, ecx
mov dword [esp + 0x60], ecx
nop dword [eax + eax]
cmp edx, ebx
jb 0x49aa06
mov eax, dword [esp + edi*4 + 0x38]
inc edi
mov dword [esp + 0x14], ebx
movzx ecx, byte [eax + 0x11]
movzx eax, byte [eax + 0x10]
imul ecx, eax
add ebx, ecx
cmp edx, ebx
jae 0x49a9e4
mov dword [esp + 0x30], edi
mov dword [esp + 0x44], ebx
mov edi, dword [esp + edi*4 + 0x34]
mov eax, edx
sub eax, dword [esp + 0x14]
xor edx, edx
mov dword [esp + 0x70], eax
push 1
movzx ecx, byte [edi + 0x11]
div ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x4c]
push eax
push edi
push esi
call fcn.004119a0
mov ebx, eax
add esp, 0x10
movzx eax, byte [edi + 0x11]
cmp eax, ebp
jbe 0x49aba2
mov cl, byte [ebx + 0x11]
xor edx, edx
movzx eax, cl
div ebp
mov edi, eax
mov dword [esp + 0x78], edi
cmp cl, 0x20
je 0x49aa7d
cmp cl, 0x40
jne 0x49aa98
cmp ebp, 0x10
je 0x49aa72
cmp ebp, 0x20
jne 0x49aa98
push ebx
push 0x199
jmp 0x49ab70
push ebx
push 0x19c
jmp 0x49ab70
cmp ebp, 8
je 0x49ab6a
cmp ebp, 0x10
je 0x49ab62
cmp ebp, 0x20
je 0x49ab7b
mov dword [esp + 0x24], 0
test edi, edi
je 0x49ab48
mov eax, ebp
or eax, 4
xor ebp, ebp
mov dword [esp + 0x74], eax
test ebp, ebp
jne 0x49aabb
mov eax, ebx
jmp 0x49ab16
mov eax, ebp
cdq
push 0x20
push edx
push eax
call fcn.0040f5b0
push 0x20
push 1
push dword [esi + 0xc]
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], edx
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
je 0x49aaff
mov eax, dword [esp + 0x48]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x50]
push edi
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push edi
push ebx
push 0x1ac
push esi
call fcn.0041cdb0
mov edi, dword [esp + 0x88]
add esp, 0x10
push 0
push dword [esp + 0x78]
push 4
push eax
push esi
call fcn.0041d640
mov ecx, dword [esp + 0x38]
add esp, 0x14
add ebp, dword [esp + 0x28]
mov dword [esp + ecx*4 + 0x118], eax
inc ecx
mov dword [esp + 0x24], ecx
cmp ecx, edi
jb 0x49aab3
mov ebp, dword [esp + 0x28]
lea eax, [esp + 0x118]
push eax
push edi
call fcn.00409930
add esp, 4
push eax
push esi
call fcn.0041cf40
jmp 0x49ab76
push ebx
push 0x195
jmp 0x49ab70
push ebx
push 0x198
push esi
call fcn.0041cd60
add esp, 0xc
mov ebx, eax
mov eax, dword [esp + 0x70]
xor edx, edx
div dword [esp + 0x6c]
push 1
mov eax, edx
xor edx, edx
div ebp
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x4c]
push eax
push ebx
push esi
call fcn.004119a0
add esp, 0x10
mov ebx, eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x30]
add edx, ebp
mov dword [esp + 0x60], edx
mov dword [esp + eax*4 + 0x1d8], ebx
inc eax
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x68]
jb 0x49a9e0
mov ebx, dword [esp + 0x1c]
cmp ebx, ebp
jbe 0x49ac0f
xor edx, edx
lea ecx, [esp + 0x1d8]
mov eax, ebx
div ebp
push ecx
push eax
call fcn.00409930
add esp, 4
push eax
push esi
call fcn.0041cf40
push ebx
push eax
push esi
call fcn.004117e0
add esp, 0x18
mov dword [esp + 0x98], eax
lea edi, [esp + 0x98]
jmp 0x49ac16
lea edi, [esp + 0x1d8]
push 1
call fcn.00409930
push edi
push eax
push esi
call fcn.0041cf40
mov ebp, dword [esp + 0x50]
add esp, 0x10
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x34]
add ecx, ebx
mov dword [esp + 0x18], ecx
mov dword [esp + ebp*4 + 0x158], eax
inc ebp
sub dword [esp + 0x2c], 1
mov dword [esp + 0x40], ebp
jne 0x49a963
jmp 0x49ad2a
cmp al, 0x40
jne 0x49ac62
or edx, 0xffffffff
or edi, 0xffffffff
jmp 0x49ac83
xor edx, edx
movzx eax, al
and eax, 0x3f
xor edi, edi
bts edx, eax
cmp eax, 0x20
cmovae edi, edx
xor edx, edi
cmp eax, 0x40
cmovae edi, edx
add edx, 0xffffffff
adc edi, 0xffffffff
and ebx, edx
mov edx, dword [esp + 0x48]
and edx, edi
mov eax, ebx
or eax, edx
jne 0x49ac97
mov eax, dword [esp + 0x3c]
jmp 0x49acec
movzx edi, byte [esp + 0x13]
push edi
push edx
push ebx
call fcn.0040f5b0
push edi
push 1
push dword [esi + 0xc]
mov ebx, eax
mov dword [esp + 0x60], edx
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
je 0x49acd5
mov eax, dword [esp + 0x48]
push edi
mov dword [edi + 0x30], ebx
push esi
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push edi
push dword [esp + 0x40]
push 0x10a
push esi
call fcn.0041cdb0
mov ecx, dword [esp + 0x38]
add esp, 0x10
movzx edx, ch
push edx
movzx ecx, cl
mov edi, edx
push ecx
push 0
push ebp
push dword [esp + 0x64]
shr edi, 3
push eax
push dword [esp + 0x74]
imul edi, ecx
push esi
call fcn.00499970
mov ebp, dword [esp + 0x60]
add eax, 0x1c
add esp, 0x20
mov dword [esp + ebp*4 + 0x158], eax
inc ebp
mov dword [esp + 0x40], ebp
jmp 0x49ad2e
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0x20]
add dword [esp + 0x64], edi
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x90]
cmp edi, ebx
jb 0x499e84
mov edx, dword [esp + 0x58]
push edx
push dword [esp + 0x98]
lea eax, [esp + 0x160]
push 0
push ebp
push eax
push esi
call fcn.0040f700
mov ebx, dword [esp + 0x74]
push eax
lea eax, [ebx + 0x1c]
push eax
call fcn.00407b40
push ebx
call fcn.00409250
add esp, 0x24
mov al, 1
mov ecx, dword [esp + 0x3d8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004e5b77
add esp, 0x3cc
ret