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

Disassembly:
push edi
push esi
push ebx
sub esp, 0x10
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
cmp ecx, 0x13
jle 0x420940
mov eax, 4
xor edi, edi
nop
add eax, eax
add edi, 1
lea edx, [eax + 0xf]
cmp ecx, edx
jg 0x4208f0
mov dword [esp], edi
call fcn.00423850
lea edx, [esi + 1]
mov dword [eax], edi
movzx ecx, byte [esi]
lea edi, [eax + 4]
mov byte [eax + 4], cl
mov eax, edi
test cl, cl
je 0x42092f
lea esi, [esi]
nop
movzx ecx, byte [edx]
add eax, 1
add edx, 1
mov byte [eax], cl
test cl, cl
jne 0x420920
test ebx, ebx
je 0x420935
mov dword [ebx], eax
add esp, 0x10
mov eax, edi
pop ebx
pop esi
pop edi
ret
xor edi, edi
jmp 0x4208fc
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0xb0
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0x24]
mov dword [esp + 0x88], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x8c], esi
mov esi, dword [ebp + 0x1c]
mov dword [esp + 0x98], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x84], esi
mov esi, dword [ebp + 0x20]
mov edi, eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x94], esi
mov esi, dword [eax]
mov dword [esp + 0x80], ecx
mov eax, esi
mov dword [esp + 0x90], ebx
and eax, 0xffffffcf
mov dword [edi], eax
mov eax, esi
and eax, 7
cmp eax, 3
je 0x420f70
mov edi, esi
and edi, 4
mov dword [esp + 0x70], edi
jne 0x420ef8
test eax, eax
je 0x420f38
mov ebx, dword [ecx]
xor edx, edx
mov eax, 0x20
mov dword [esp + 0x9c], ebx
mov ecx, ebx
cmp ebx, 0x20
jle 0x420c4c
add eax, eax
add edx, 1
cmp ecx, eax
jg 0x420c43
mov dword [esp], edx
call fcn.00423850
mov edi, eax
mov eax, dword [esp + 0x9c]
sub eax, 1
sar eax, 5
lea edx, [eax*4]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x98]
mov ebx, eax
lea ecx, [eax + edx]
mov dword [esp + 0x60], eax
add ebx, 1
mov dword [esp + 0x58], ecx
lea ecx, [edi + 0x14]
mov dword [esp + 0x78], ebx
mov ebx, dword [esp + 0x58]
add ebx, 1
mov dword [esp + 0x68], ebx
mov ebx, eax
mov eax, ecx
add ebx, 4
sub eax, ebx
cmp eax, 8
jbe 0x4213d8
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x68]
cmp eax, ebx
setae bl
cmp edx, 0xb
seta dl
test bl, dl
je 0x4213d8
mov edx, dword [esp + 0x64]
and edx, 0x3fffffff
lea ebx, [edx + 1]
mov edx, dword [esp + 0x78]
cmp eax, edx
mov edx, 1
cmovae edx, ebx
mov eax, edx
mov dword [esp + 0x54], edx
mov edx, ecx
shr eax, 2
mov ebx, eax
mov eax, dword [esp + 0x98]
shl ebx, 4
add ebx, eax
lea esi, [esi]
nop
movdqu xmm0, xmmword [eax]
add eax, 0x10
add edx, 0x10
movups xmmword [edx - 0x10], xmm0
cmp ebx, eax
jne 0x420d00
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x98]
mov eax, ebx
and eax, 0xfffffffc
shl eax, 2
add edx, eax
add eax, ecx
and ebx, 3
je 0x420d50
mov ecx, dword [edx]
mov ebx, dword [esp + 0x58]
mov dword [eax], ecx
lea ecx, [edx + 4]
cmp ebx, ecx
jb 0x420d50
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
lea ecx, [edx + 8]
cmp ebx, ecx
jb 0x420d50
mov edx, dword [edx + 8]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x68], ecx
lea ebx, [eax*4 + 4]
mov eax, 4
cmovb ebx, eax
sar ebx, 2
mov edx, ebx
jmp 0x420d80
test edx, edx
je 0x420fa8
mov eax, edx
sub edx, 1
mov ebx, dword [edi + edx*4 + 0x14]
test ebx, ebx
je 0x420d78
bsr edx, dword [edi + edx*4 + 0x14]
mov dword [edi + 0x10], eax
shl eax, 5
xor edx, 0x1f
sub eax, edx
mov dword [esp + 0x54], eax
mov dword [esp], edi
call fcn.004231a0
mov ecx, dword [esp + 0x88]
mov dword [esp + 0xac], eax
mov dword [esp + 0x50], ecx
test eax, eax
jne 0x420fc0
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x420f30
lea eax, [esp + 0xac]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00424600
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
fstp qword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
add ebx, ecx
and edx, 0xfffff
mov dword [esp + 0x78], eax
lea ecx, [ebx - 1]
mov eax, 1
or edx, 0x3ff00000
sub eax, ebx
mov dword [esp + 0x68], ecx
test ecx, ecx
mov dword [esp + 0x7c], edx
fld qword [esp + 0x78]
cmovns eax, ecx
fsub dword [0x51bb48]
fmul qword [str.aCoc]
sub eax, 0x435
fadd qword [0x51bb58]
fild dword [esp + 0x68]
fmul qword [0x51bb60]
faddp st(1)
test eax, eax
jle 0x420e59
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fmul qword [0x51bb68]
faddp st(1)
fld st(0)
fisttp dword [esp + 0x64]
fldz
fcompi st(1)
ja 0x421330
fstp st(0)
mov eax, ecx
shl eax, 0x14
add eax, edx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x54]
sub eax, ecx
lea ecx, [eax - 1]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x64]
cmp ecx, 0x16
ja 0x420ff0
fld qword [ecx*8 + 0x51bbe0]
fst qword [esp + 0x68]
fld qword [esp + 0x78]
fxch st(1)
fcompi st(1)
fstp st(0)
ja 0x4213c0
mov dword [esp + 0x38], 0
mov dword [esp + 0x48], 0
test eax, eax
jg 0x420ed8
mov edx, 1
mov dword [esp + 0x60], 0
sub edx, eax
mov dword [esp + 0x48], edx
lea esi, [esi]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x3c], 0
add dword [esp + 0x60], ecx
mov dword [esp + 0x44], ecx
jmp 0x421043
xor ebx, ebx
cmp eax, 4
jne 0x420f66
mov eax, dword [esp + 0x94]
mov dword [eax], 0xffff8000
mov dword [ebp + 0x10], 3
mov eax, dword [esp + 0x90]
mov dword [ebp + 8], 0x51bb41
mov dword [ebp + 0xc], eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp 0x4208d0
mov dword [esp], edi
call fcn.00423930
mov eax, dword [esp + 0x94]
mov dword [eax], 1
mov eax, dword [esp + 0x90]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov dword [esp], 0x51bb45
call 0x4208d0
mov ebx, eax
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x94]
mov dword [eax], 0xffff8000
mov dword [ebp + 0x10], 8
mov eax, dword [esp + 0x90]
mov dword [ebp + 8], str.Infinity
mov dword [ebp + 0xc], eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp 0x4208d0
mov dword [esp + 0x54], edx
mov dword [edi + 0x10], 0
jmp 0x420da1
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00422fe0
mov eax, dword [esp + 0xac]
sub dword [esp + 0x54], eax
mov ebx, dword [esp + 0x88]
add ebx, eax
mov dword [esp + 0x50], ebx
jmp 0x420dc3
mov dword [esp + 0x38], 1
mov edx, dword [esp + 0x60]
mov dword [esp + 0x48], 0
test edx, edx
jns 0x42101b
mov edx, 1
mov dword [esp + 0x60], 0
sub edx, eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x64]
test eax, eax
jns 0x420ed8
mov eax, dword [esp + 0x64]
sub dword [esp + 0x48], eax
mov dword [esp + 0x64], 0
mov ecx, eax
mov dword [esp + 0x44], eax
neg ecx
mov dword [esp + 0x3c], ecx
mov eax, dword [esp + 0x8c]
cmp eax, 9
ja 0x4212a0
cmp eax, 5
jg 0x421350
lea eax, [ebx + 0x3fd]
cmp eax, 0x7f7
mov eax, dword [esp + 0x8c]
setbe bl
cmp eax, 4
je 0x4221b2
cmp eax, 5
je 0x421df7
cmp eax, 2
jne 0x421798
mov dword [esp + 0x40], 0
mov ecx, dword [esp + 0x84]
mov eax, 1
test ecx, ecx
cmovg eax, ecx
mov dword [esp + 0x2c], eax
mov edx, eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x84], eax
mov dword [esp], eax
mov dword [esp + 0xac], edx
call fcn.00420890
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x80]
mov eax, dword [eax + 0xc]
sub eax, 1
mov dword [esp + 0x58], eax
je 0x421104
mov ecx, dword [esp + 0x58]
mov eax, 2
test ecx, ecx
cmovns eax, ecx
and esi, 8
mov dword [esp + 0x58], eax
mov ecx, eax
je 0x421590
mov eax, 3
sub eax, ecx
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0x68]
cmp esi, 0xe
setbe al
and al, bl
mov byte [esp + 0x2b], al
je 0x421590
mov eax, dword [esp + 0x44]
or eax, dword [esp + 0x58]
jne 0x421590
movsd xmm1, qword [esp + 0x78]
mov eax, dword [esp + 0x38]
mov dword [esp + 0xac], 0
movsd qword [esp + 0x58], xmm1
test eax, eax
je 0x421157
fld qword [esp + 0x58]
fld1
fcompi st(1)
ja 0x4221bf
fstp st(0)
fld qword [esp + 0x58]
fadd st(0)
fadd dword [0x51bb84]
fstp qword [esp + 0x30]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x20], eax
mov eax, edx
sub eax, 0x3400000
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x68]
test eax, eax
je 0x42153e
movsd xmm2, qword [esp + 0x58]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x30], 1
movsd qword [esp + 0x18], xmm2
mov eax, dword [esp + 0x40]
fld qword [esp + 0x20]
fld qword [ecx*8 + 0x51bbd8]
test eax, eax
je 0x4220c4
fdivr dword [0x51bb8c]
mov esi, dword [esp + 0x4c]
lea edx, [esi + 1]
fsubrp st(1)
fld qword [esp + 0x18]
fld st(0)
fisttp dword [esp + 0x78]
fild dword [esp + 0x78]
movzx eax, byte [esp + 0x78]
add eax, 0x30
fsubp st(1)
fxch st(1)
mov byte [esi], al
fcomi st(1)
jbe 0x421239
fstp st(0)
jmp 0x42242d
mov eax, dword [esp + 0xac]
add eax, 1
mov dword [esp + 0xac], eax
cmp eax, ecx
jge 0x421566
fld dword [0x51bb7c]
add edx, 1
fmul st(1), st(0)
fmulp st(2)
fxch st(1)
fld st(0)
fisttp dword [esp + 0x78]
fild dword [esp + 0x78]
movzx eax, byte [esp + 0x78]
add eax, 0x30
fsubp st(1)
fxch st(1)
mov byte [edx - 1], al
fcomi st(1)
ja 0x42242b
fld st(1)
fsubr dword [0x51bb78]
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x4211f0
fstp st(0)
fstp st(0)
jmp 0x42125b
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x42125b
fstp st(0)
fstp st(0)
mov ebx, dword [esp + 0x4c]
jmp 0x421276
cmp ebx, ecx
je 0x4222ec
movzx eax, byte [ecx - 1]
mov edx, ecx
lea ecx, [edx - 1]
cmp al, 0x39
je 0x421268
mov dword [esp + 0x4c], ebx
add eax, 1
mov byte [ecx], al
mov dword [esp + 0x4c], edx
mov dword [esp + 0x70], 0x20
jmp 0x4214d8
lea eax, [ebx + 0x3fd]
mov dword [esp + 0x8c], 0
cmp eax, 0x7f7
setbe bl
fild dword [esp + 0x9c]
fmul qword [0x51bb70]
fisttp dword [esp + 0x84]
mov eax, dword [esp + 0x84]
add eax, 3
mov dword [esp], eax
mov dword [esp + 0xac], eax
call fcn.00420890
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x80]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x84], eax
sub eax, 1
mov dword [esp + 0x58], eax
je 0x4213fc
mov dword [esp + 0x84], 0
mov dword [esp + 0x40], 1
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x68], 0xffffffff
jmp 0x4210dc
fild dword [esp + 0x64]
fucompi st(1)
fstp st(0)
jp 0x421340
je 0x420e6b
sub dword [esp + 0x64], 1
jmp 0x420e6b
sub eax, 4
mov dword [esp + 0x8c], eax
cmp eax, 4
je 0x4220b5
cmp eax, 5
je 0x421ee2
mov dword [esp + 0x40], 0
xor ebx, ebx
cmp eax, 2
je 0x421094
mov dword [esp + 0x8c], 3
lea esi, [esi]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x84]
mov edx, 1
add eax, ecx
mov dword [esp + 0x2c], eax
add eax, 1
test eax, eax
mov dword [esp + 0x68], eax
cmovg edx, eax
mov eax, edx
jmp 0x4210b6
sub dword [esp + 0x64], 1
mov dword [esp + 0x38], 0
jmp 0x420ff8
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x58]
lea esi, [esi]
nop
mov edx, dword [eax]
add eax, 4
add ecx, 4
mov dword [ecx - 4], edx
cmp ebx, eax
jae 0x4213e8
jmp 0x420d50
mov eax, dword [esp + 0x50]
mov dword [esp + 0x68], 0xffffffff
mov dword [esp + 0x84], 0
test eax, eax
js 0x4223be
mov dword [esp + 0x40], 1
mov dword [esp + 0x2c], 0xffffffff
lea esi, [esi]
nop
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x44]
cmp esi, dword [eax + 0x14]
jg 0x42159c
mov eax, esi
mov edx, dword [esp + 0x84]
fld qword [eax*8 + 0x51bbe0]
test edx, edx
jns 0x421cf7
mov esi, dword [esp + 0x68]
test esi, esi
jg 0x421cf7
jne 0x4217ae
fmul dword [0x51bb88]
fld qword [esp + 0x78]
fxch st(1)
fcompi st(1)
fstp st(0)
jae 0x4217b0
add eax, 2
mov dword [esp + 0x78], 0
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x9c], 0
add dword [esp + 0x4c], 1
mov byte [ebx], 0x31
mov dword [esp + 0x70], 0x20
mov eax, dword [esp + 0x78]
mov dword [esp], eax
call fcn.00423930
mov ecx, dword [esp + 0x9c]
test ecx, ecx
je 0x4214d8
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call fcn.00423930
mov dword [esp], edi
call fcn.00423930
mov edi, dword [esp + 0x94]
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x30]
mov byte [eax], 0
mov dword [edi], esi
mov edi, dword [esp + 0x90]
test edi, edi
je 0x421501
mov dword [edi], eax
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
or dword [eax], edi
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
fstp st(0)
fld qword [esp + 0x58]
fadd st(0)
fadd dword [0x51bb84]
fstp qword [esp + 0x78]
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x20], eax
mov eax, edx
sub eax, 0x3400000
mov dword [esp + 0x24], eax
fld qword [esp + 0x58]
fsub dword [0x51bb88]
fld qword [esp + 0x20]
fxch st(1)
fcomi st(1)
ja 0x42226c
fxch st(1)
fchs
fcompi st(1)
fstp st(0)
ja 0x4217b0
jmp 0x42156e
fstp st(0)
fstp st(0)
jmp 0x42156e
fstp st(0)
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x58], 0
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
lea esi, [esi]
lea esi, [esi]
mov ecx, dword [esp + 0x50]
test ecx, ecx
jns 0x421430
mov esi, dword [esp + 0x40]
test esi, esi
je 0x4217e8
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x9c]
sub eax, esi
mov esi, dword [esp + 0x80]
lea edx, [eax + 1]
mov ebx, dword [esi + 4]
mov esi, dword [esp + 0x50]
mov dword [esp + 0xac], edx
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
jge 0x421cd0
mov ecx, dword [esp + 0x8c]
lea eax, [ecx - 3]
and eax, 0xfffffffd
je 0x421c90
mov eax, esi
mov esi, dword [esp + 0x68]
sub eax, ebx
add eax, 1
cmp ecx, 1
setg dl
test esi, esi
mov dword [esp + 0xac], eax
setg cl
test dl, cl
je 0x421615
cmp eax, esi
jg 0x422529
mov ebx, dword [esp + 0x48]
add dword [esp + 0x60], eax
mov esi, dword [esp + 0x3c]
add eax, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x78], esi
mov esi, ebx
mov dword [esp], 1
call fcn.00423ab0
mov dword [esp + 0x40], 1
mov dword [esp + 0x9c], eax
test esi, esi
jle 0x42166e
mov ecx, dword [esp + 0x60]
test ecx, ecx
jle 0x42166e
cmp esi, ecx
mov eax, ecx
cmovle eax, esi
sub dword [esp + 0x48], eax
sub ecx, eax
mov dword [esp + 0xac], eax
sub esi, eax
mov dword [esp + 0x60], ecx
mov ebx, dword [esp + 0x3c]
test ebx, ebx
je 0x42169c
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x42168a
mov edx, dword [esp + 0x78]
test edx, edx
jne 0x421e99
mov eax, dword [esp + 0x3c]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00423d00
mov edi, eax
mov dword [esp], 1
call fcn.00423ab0
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x64]
test eax, eax
jne 0x421ac0
cmp dword [esp + 0x8c], 1
jle 0x421c50
mov ebx, 0x1f
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x48]
sub ebx, eax
sub ebx, 4
and ebx, 0x1f
add edx, ebx
mov dword [esp + 0xac], ebx
mov eax, ebx
test edx, edx
jle 0x4216ff
mov dword [esp], edi
mov dword [esp + 4], edx
call fcn.00424060
mov edi, eax
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0x60]
add ecx, eax
test ecx, ecx
jle 0x42171d
mov eax, dword [esp + 0x78]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00424060
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x8c], 2
setg dl
test eax, eax
jne 0x421b00
mov eax, dword [esp + 0x68]
test eax, eax
jg 0x421808
test dl, dl
je 0x421808
mov ebx, dword [esp + 0x68]
test ebx, ebx
jne 0x4217c3
mov eax, dword [esp + 0x78]
mov dword [esp + 8], 0
mov dword [esp + 4], 5
mov dword [esp], eax
call fcn.004239a0
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 0x78], eax
call fcn.004242d0
test eax, eax
jle 0x4217c3
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x4c]
add eax, 2
mov dword [esp + 0x30], eax
jmp 0x4214a2
cmp eax, 3
jne 0x4212b9
mov dword [esp + 0x40], 0
jmp 0x421390
fstp st(0)
mov dword [esp + 0x78], 0
mov dword [esp + 0x9c], 0
mov eax, dword [esp + 0x84]
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x70], 0x10
neg eax
mov dword [esp + 0x30], eax
jmp 0x4214b2
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x9c], 0
mov dword [esp + 0x78], eax
jmp 0x421648
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
add eax, 1
mov dword [esp + 0x30], eax
test ecx, ecx
je 0x421b90
add ebx, esi
test ebx, ebx
jle 0x42183f
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.00424060
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x64]
mov dword [esp + 0x88], eax
test edx, edx
jne 0x422221
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x84], eax
mov eax, 1
jmp 0x421960
mov dword [esp], edx
call fcn.00423930
mov eax, 1
test ebx, ebx
js 0x421f8e
or ebx, dword [esp + 0x8c]
jne 0x42189e
mov ecx, dword [esp + 0x98]
test byte [ecx], 1
je 0x421f8e
mov ecx, dword [esp + 0x84]
lea esi, [ecx + 1]
mov ebx, esi
test eax, eax
jle 0x4218b9
cmp dword [esp + 0x58], 2
jne 0x422294
movzx eax, byte [esp + 0x80]
mov byte [esi - 1], al
mov eax, dword [esp + 0x68]
cmp dword [esp + 0xac], eax
je 0x4222cb
mov dword [esp], edi
mov dword [esp + 8], 0
mov dword [esp + 4], 0xa
call fcn.004239a0
mov ecx, dword [esp + 0x88]
cmp dword [esp + 0x9c], ecx
mov dword [esp + 8], 0
mov edi, eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], 0xa
mov dword [esp], eax
je 0x421aa0
call fcn.004239a0
mov dword [esp + 8], 0
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 4], 0xa
mov dword [esp], eax
call fcn.004239a0
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x84], esi
add eax, 1
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x78]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00420980
mov dword [esp], edi
lea ecx, [eax + 0x30]
mov esi, eax
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 4], ecx
call fcn.004242d0
mov ecx, dword [esp + 0x88]
mov ebx, eax
mov eax, dword [esp + 0x78]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00424320
mov edx, eax
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x421870
mov dword [esp + 4], edx
mov dword [esp], edi
mov dword [esp + 0x60], edx
call fcn.004242d0
mov edx, dword [esp + 0x60]
mov dword [esp + 0x64], eax
mov dword [esp], edx
call fcn.00423930
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x8c]
or eax, ecx
jne 0x421dc0
mov ecx, dword [esp + 0x98]
mov ecx, dword [ecx]
mov edx, ecx
mov dword [esp + 0x64], ecx
and edx, 1
or edx, dword [esp + 0x58]
jne 0x42187d
mov edx, dword [esp + 0x80]
cmp edx, 0x39
je 0x42238a
test ebx, ebx
jle 0x4225cf
mov dword [esp + 0x70], 0x20
lea edx, [esi + 0x31]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x9c]
mov byte [eax], dl
lea esi, [eax + 1]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x9c], eax
nop
mov eax, dword [esp + 0x78]
mov dword [esp + 0x98], ecx
mov dword [esp], eax
call fcn.00423930
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x421e04
mov ecx, dword [esp + 0x98]
test ecx, ecx
je 0x421a89
cmp ecx, eax
je 0x421a89
mov dword [esp], ecx
call fcn.00423930
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x4c], esi
jmp 0x4214c9
call fcn.004239a0
mov dword [esp + 0x9c], eax
mov dword [esp + 0x88], eax
jmp 0x42194f
mov eax, dword [esp + 0x64]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x78]
mov dword [esp], eax
call fcn.00423d00
cmp dword [esp + 0x8c], 1
mov dword [esp + 0x78], eax
jle 0x421e49
mov dword [esp + 0x64], 0
mov ebx, eax
mov eax, dword [ebx + 0x10]
bsr ebx, dword [ebx + eax*4 + 0x10]
xor ebx, 0x1f
jmp 0x4216cb
mov eax, dword [esp + 0x78]
mov dword [esp], edi
mov byte [esp + 0x88], dl
mov dword [esp + 4], eax
call fcn.004242d0
movzx edx, byte [esp + 0x88]
test eax, eax
jns 0x421734
mov dword [esp], edi
mov eax, dword [esp + 0x44]
mov dword [esp + 8], 0
mov dword [esp + 4], 0xa
sub eax, 1
mov dword [esp + 0x80], eax
call fcn.004239a0
movzx edx, byte [esp + 0x88]
mov edi, eax
mov eax, dword [esp + 0x2c]
test eax, eax
setle al
and edx, eax
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x422454
test dl, dl
jne 0x4223cb
mov eax, dword [esp + 0x44]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x68], eax
lea esi, [esi]
lea esi, [esi]
mov esi, edi
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x68]
mov eax, 1
jmp 0x421bcc
mov dword [esp], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0xa
call fcn.004239a0
mov esi, eax
mov eax, dword [esp + 0xac]
add eax, 1
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x78]
add ebx, 1
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00420980
add eax, 0x30
mov byte [ebx - 1], al
cmp dword [esp + 0xac], edi
jl 0x421ba8
mov edx, eax
mov edi, esi
xor ecx, ecx
mov esi, dword [esp + 0x58]
test esi, esi
je 0x421ef1
mov eax, dword [edi + 0x10]
cmp esi, 2
je 0x421f42
cmp eax, 1
jg 0x421dc9
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x421dc9
test eax, eax
setne al
movzx eax, al
shl eax, 4
mov dword [esp + 0x70], eax
lea esi, [esi]
lea esi, [esi]
mov esi, ebx
sub ebx, 1
cmp byte [ebx], 0x30
je 0x421c40
jmp 0x421a50
cmp dword [esp + 0x54], 1
jne 0x4216c6
mov eax, dword [esp + 0x80]
mov ebx, dword [esp + 0x88]
mov eax, dword [eax + 4]
add eax, 1
cmp eax, ebx
jge 0x4216c6
add dword [esp + 0x48], 1
add dword [esp + 0x60], 1
mov dword [esp + 0x64], 1
jmp 0x4216c6
mov ebx, dword [esp + 0x68]
mov esi, dword [esp + 0x3c]
lea eax, [ebx - 1]
cmp esi, eax
jl 0x421e11
sub esi, eax
mov eax, ebx
mov dword [esp + 0x78], esi
test ebx, ebx
jns 0x4224a6
mov dword [esp + 0xac], 0
mov esi, dword [esp + 0x48]
sub esi, ebx
jmp 0x42162d
cmp dword [esp + 0x8c], 1
jg 0x421c90
mov eax, dword [esp + 0x3c]
add dword [esp + 0x60], edx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x48]
mov esi, eax
add eax, edx
mov dword [esp + 0x48], eax
jmp 0x42162d
fld qword [esp + 0x78]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0xac], 1
lea edx, [esi + 1]
fld st(0)
fdiv st(2)
fisttp dword [esp + 0x9c]
fild dword [esp + 0x9c]
movzx eax, byte [esp + 0x9c]
add eax, 0x30
fmul st(2)
mov byte [esi], al
mov eax, dword [esp + 0x44]
add eax, 1
mov dword [esp + 0x30], eax
fsubp st(1)
fldz
fxch st(1)
fucomi st(1)
fstp st(1)
jp 0x421d60
lea esi, [esi]
jne 0x421d60
fstp st(0)
fstp st(0)
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x4c], edx
jmp 0x4214d8
mov eax, dword [esp + 0xac]
mov esi, dword [esp + 0x68]
cmp eax, esi
je 0x421f60
fmul dword [0x51bb7c]
add eax, 1
add edx, 1
mov dword [esp + 0xac], eax
fld st(0)
fdiv st(2)
fisttp dword [esp + 0x9c]
fild dword [esp + 0x9c]
movzx eax, byte [esp + 0x9c]
add eax, 0x30
fmul st(2)
mov byte [edx - 1], al
fsubp st(1)
fldz
fxch st(1)
fucomi st(1)
fstp st(1)
jnp 0x421d48
jmp 0x421d60
mov eax, dword [esp + 0x64]
jmp 0x42187d
mov edx, dword [esp + 0x4c]
jmp 0x421dd8
cmp edx, ebx
je 0x421e80
mov esi, ebx
lea ebx, [ebx - 1]
movzx eax, byte [esi - 1]
cmp al, 0x39
je 0x421dd0
add eax, 1
mov dword [esp + 0x70], 0x20
mov byte [ebx], al
jmp 0x421a50
mov dword [esp + 0x40], 1
jmp 0x421390
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x4c], esi
jmp 0x4214d8
mov ebx, dword [esp + 0x68]
mov ecx, dword [esp + 0x48]
mov edx, eax
mov dword [esp + 0x78], 0
mov esi, dword [esp + 0x3c]
add dword [esp + 0x60], ebx
mov dword [esp + 0xac], ebx
add ebx, ecx
sub edx, esi
mov dword [esp + 0x48], ebx
mov esi, ecx
add dword [esp + 0x64], edx
mov dword [esp + 0x3c], eax
jmp 0x42162d
cmp dword [esp + 0x54], 1
jne 0x421ae6
mov eax, dword [esp + 0x80]
mov eax, dword [eax + 4]
add eax, 1
cmp dword [esp + 0x88], eax
jg 0x4225f6
xor edx, edx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x64], edx
jmp 0x421af0
mov eax, dword [esp + 0x4c]
add dword [esp + 0x30], 1
mov dword [esp + 0x70], 0x20
mov byte [eax], 0x31
jmp 0x421a50
mov ebx, dword [esp + 0x9c]
mov eax, dword [esp + 0x78]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00423d00
mov dword [esp + 4], edi
mov dword [esp], eax
mov dword [esp + 0x9c], eax
call fcn.00423b60
mov dword [esp], edi
mov ebx, eax
mov edi, ebx
call fcn.00423930
mov eax, dword [esp + 0x78]
sub dword [esp + 0x3c], eax
je 0x42169c
jmp 0x42168a
mov dword [esp + 0x40], 1
xor ebx, ebx
jmp 0x421390
mov dword [esp], edi
mov dword [esp + 4], 1
mov dword [esp + 0x98], ecx
mov dword [esp + 0x8c], edx
call fcn.00424060
mov edi, eax
mov eax, dword [esp + 0x78]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.004242d0
mov ecx, dword [esp + 0x98]
test eax, eax
jg 0x421dc9
jne 0x421f42
mov edx, dword [esp + 0x8c]
and edx, 1
jne 0x421dc9
cmp dword [edi + 0x10], 1
mov dword [esp + 0x70], 0x10
jg 0x421c40
mov eax, dword [edi + 0x14]
jmp 0x421c27
mov eax, dword [esp + 0x58]
test eax, eax
je 0x4223e3
fstp st(0)
fstp st(0)
cmp eax, 1
je 0x4224e5
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x70], 0x10
mov dword [esp + 0x4c], edx
jmp 0x4214d8
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x80]
test ebx, ebx
je 0x4222ff
cmp dword [edi + 0x10], 1
jle 0x4224f2
cmp dword [esp + 0x58], 2
je 0x422355
mov dword [esp + 0x98], edx
mov esi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x88]
jmp 0x42204f
movzx eax, byte [esp + 0x98]
mov dword [esp + 0x8c], ecx
mov byte [ecx - 1], al
mov dword [esp], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], 0xa
call fcn.004239a0
mov dword [esp], edi
cmp esi, ebx
mov dword [esp + 8], 0
cmove esi, eax
mov dword [esp + 4], 0xa
mov dword [esp + 0x9c], eax
call fcn.004239a0
mov edi, eax
mov eax, dword [esp + 0x78]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00420980
mov ecx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x9c]
add eax, 0x30
mov dword [esp + 0x98], eax
mov dword [esp + 0x84], ecx
mov eax, dword [esp + 0x78]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.004242d0
mov ecx, dword [esp + 0x84]
add ecx, 1
test eax, eax
jg 0x421fd0
mov edx, dword [esp + 0x98]
mov dword [esp + 0x9c], esi
mov eax, esi
mov esi, ecx
mov dword [esp + 0x88], ebx
cmp edx, 0x39
je 0x422394
mov dword [esp + 0x9c], ebx
add edx, 1
mov ecx, eax
mov dword [esp + 0x70], 0x20
mov eax, dword [esp + 0x84]
mov byte [eax], dl
jmp 0x421a50
mov dword [esp + 0x40], 1
xor ebx, ebx
jmp 0x421094
fmulp st(1)
fld qword [esp + 0x78]
mov edx, dword [esp + 0x4c]
xor esi, esi
mov dword [esp + 0xac], 1
movzx eax, byte [esp + 0x2b]
fld st(0)
jmp 0x42211d
lea esi, [ebx + 0x30]
fild dword [esp + 0x9c]
add edx, 1
mov ebx, esi
mov byte [edx - 1], bl
mov ebx, dword [esp + 0xac]
fsubp st(1)
cmp ebx, ecx
je 0x422381
add ebx, 1
fmul dword [0x51bb7c]
mov esi, eax
mov dword [esp + 0xac], ebx
fld st(0)
fisttp dword [esp + 0x9c]
mov ebx, dword [esp + 0x9c]
test ebx, ebx
jne 0x4220e8
mov byte [edx], 0x30
mov ebx, dword [esp + 0xac]
add edx, 1
cmp ebx, ecx
jne 0x42210b
mov ecx, esi
mov eax, 0x30
test cl, cl
fcmove st(0), st(1)
fstp st(1)
fld dword [0x51bb8c]
fld st(2)
fadd st(1)
fxch st(2)
fcomi st(2)
fstp st(2)
ja 0x42124f
fsubrp st(2)
fxch st(1)
fcompi st(1)
ja 0x4224c2
fstp st(0)
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x50]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
test esi, esi
js 0x42255c
mov eax, dword [esp + 0x80]
mov dword [esp + 0x58], 0
mov ebx, dword [eax + 0x14]
test ebx, ebx
js 0x4217e8
mov eax, dword [esp + 0x44]
jmp 0x421446
mov dword [esp + 0x40], 1
jmp 0x421094
test esi, esi
je 0x421515
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jle 0x42156c
fmul dword [0x51bb7c]
fst qword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
fmul dword [0x51bb80]
fadd dword [0x51bb84]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
fstp qword [esp + 0x30]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
mov eax, edx
sub eax, 0x3400000
mov dword [esp + 0x24], eax
jmp 0x4211a2
mov esi, eax
mov eax, dword [eax + 4]
mov dword [esp], eax
call fcn.00423850
lea ecx, [eax + 0xc]
mov ebx, eax
mov eax, dword [esi + 0x10]
mov dword [esp], ecx
lea edx, [eax*4 + 8]
lea eax, [esi + 0xc]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov dword [esp + 4], 1
mov dword [esp], ebx
call fcn.00424060
mov dword [esp + 0x88], eax
jmp 0x421859
fstp st(0)
fstp st(0)
mov dword [esp + 0x30], 2
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x78], 0
mov dword [esp + 0x9c], 0
jmp 0x4214a2
mov edx, dword [esp + 0x80]
cmp edx, 0x39
je 0x422394
mov eax, dword [esp + 0x88]
add edx, 1
mov dword [esp + 0x70], 0x20
mov byte [ecx], dl
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x9c], eax
jmp 0x421a50
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x80]
mov dword [esp + 0x9c], eax
jmp 0x421bfb
add dword [esp + 0x30], 1
mov eax, 0x31
mov dword [esp + 0x4c], ebx
jmp 0x421284
test eax, eax
jle 0x42234b
mov dword [esp], edi
mov dword [esp + 4], 1
mov dword [esp + 0x98], edx
call fcn.00424060
mov edi, eax
mov eax, dword [esp + 0x78]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.004242d0
mov edx, dword [esp + 0x98]
test eax, eax
jle 0x4225b7
cmp edx, 0x39
je 0x42238a
mov dword [esp + 0x58], 0x20
lea edx, [esi + 0x31]
cmp dword [edi + 0x10], 1
jle 0x422580
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x70], 0x10
lea esi, [eax + 1]
jmp 0x4220a7
fstp st(1)
mov eax, esi
jmp 0x42214f
mov eax, dword [esp + 0x84]
lea esi, [eax + 1]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x9c]
mov ebx, esi
mov edx, dword [esp + 0x4c]
mov byte [eax], 0x39
mov eax, dword [esp + 0x88]
mov dword [esp + 0x9c], eax
jmp 0x421dd8
mov dword [esp + 0x2c], 0xffffffff
jmp 0x4215a8
mov eax, dword [esp + 0x80]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x68], eax
jmp 0x421748
fadd st(0)
movzx eax, byte [edx - 1]
fcomi st(1)
ja 0x421257
fucompi st(1)
fstp st(0)
mov ebx, dword [esp + 0x4c]
jp 0x42240b
jne 0x42240b
test byte [esp + 0x9c], 1
jne 0x421276
mov dword [esp + 0x70], 0x10
lea esi, [esi]
nop
mov eax, edx
sub edx, 1
cmp byte [edx], 0x30
je 0x422418
mov dword [esp + 0x4c], eax
jmp 0x4214d8
fstp st(0)
fldz
xor eax, eax
mov ecx, 1
mov ebx, dword [esp + 0x4c]
fucompi st(1)
fstp st(0)
mov dword [esp + 0x4c], edx
setp al
cmovne eax, ecx
shl eax, 4
mov dword [esp + 0x70], eax
jmp 0x4214d8
mov eax, dword [esp + 0x9c]
mov dword [esp + 8], 0
mov dword [esp + 4], 0xa
mov dword [esp], eax
mov byte [esp + 0x88], dl
call fcn.004239a0
movzx edx, byte [esp + 0x88]
mov dword [esp + 0x9c], eax
test dl, dl
jne 0x4223cb
mov eax, dword [esp + 0x44]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x68], eax
jmp 0x42181f
add dword [esp + 0x60], ebx
mov dword [esp + 0xac], ebx
mov ebx, dword [esp + 0x48]
add eax, ebx
mov esi, ebx
mov dword [esp + 0x48], eax
jmp 0x42162d
fldz
xor eax, eax
mov ecx, 1
mov ebx, dword [esp + 0x4c]
fucompi st(1)
fstp st(0)
setp al
cmovne eax, ecx
shl eax, 4
mov dword [esp + 0x70], eax
jmp 0x422418
movzx eax, byte [edx - 1]
mov ebx, dword [esp + 0x4c]
jmp 0x421276
mov ecx, dword [edi + 0x14]
test ecx, ecx
jne 0x421fab
test eax, eax
jg 0x422303
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x84]
lea esi, [eax + 1]
jmp 0x4220a7
mov ebx, dword [esp + 0x3c]
lea eax, [esi - 1]
cmp ebx, eax
jl 0x421e11
sub ebx, eax
mov eax, esi
add dword [esp + 0x60], esi
mov dword [esp + 0x78], ebx
mov ebx, dword [esp + 0x48]
mov dword [esp + 0xac], esi
add eax, ebx
mov esi, ebx
mov dword [esp + 0x48], eax
jmp 0x42162d
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x58], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x78], eax
jmp 0x421648
mov ebx, dword [edi + 0x14]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x9c]
test ebx, ebx
mov dword [esp + 0x9c], eax
jne 0x42236a
mov eax, dword [esp + 0x58]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
lea esi, [eax + 1]
jmp 0x4220a7
jne 0x4225c2
test dl, 1
jne 0x42233b
mov dword [esp + 0x58], 0x20
jmp 0x42234b
cmp dword [edi + 0x10], 1
mov dword [esp + 0x70], 0x10
jg 0x421a2e
xor eax, eax
cmp dword [edi + 0x14], 0
setne al
shl eax, 4
mov dword [esp + 0x70], eax
jmp 0x421a2e
add dword [esp + 0x48], 1
mov ebx, dword [esp + 0x78]
add dword [esp + 0x60], 1
mov dword [esp + 0x64], 1
jmp 0x421af0