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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xb4
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
mov edx, dword [ecx + 4]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [edx]
mov edx, dword [eax + 0x10]
mov dword [esp + 0x34], eax
mov eax, dword [edx + 8]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], eax
jmp case.default.0x407477
fstp st(0)
mov eax, dword [esp + 0xc]
mov ebx, dword [eax]
add eax, 4
mov dword [esp + 0xc], eax
mov al, byte [edi + 0x36]
test al, 0xc
mov dword [esp + 0x20], ebx
je 0x40744c
add dword [edi + 0x3c], 0xffffffff
je 0x40742c
test al, 4
je 0x40744c
mov ecx, dword [esp + 0xc]
push ecx
mov esi, edi
call fcn.00403d00
add esp, 4
cmp byte [edi + 6], 1
je 0x4085b5
mov edx, dword [edi + 0xc]
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x10]
mov eax, ebx
shr eax, 6
and eax, 0xff
mov esi, eax
mov dword [esp + 0x18], eax
shl esi, 4
mov eax, ebx
mov dword [esp + 0x28], esi
add esi, ecx
and eax, 0x3f
cmp eax, 0x25
mov dword [esp + 0x14], esi
ja case.default.0x407477
jmp dword [eax*4 + 0x4085c8]
shr ebx, 0x17
shl ebx, 4
add ebx, ecx
mov eax, dword [ebx]
mov dword [esi], eax
mov ecx, dword [ebx + 4]
mov dword [esi + 4], ecx
mov edx, dword [ebx + 8]
mov dword [esi + 8], edx
jmp case.default.0x407477
shr ebx, 0xe
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x407486
mov eax, ebx
shr eax, 0x17
test ebx, 0x7fc000
mov dword [esi], eax
mov dword [esi + 8], 1
je case.default.0x407477
add dword [esp + 0xc], 4
jmp case.default.0x407477
shr ebx, 0x17
shl ebx, 4
add ebx, ecx
mov dword [ebx + 8], 0
sub ebx, 0x10
cmp ebx, esi
jae 0x4074d3
jmp case.default.0x407477
mov ecx, dword [esp + 0x34]
shr ebx, 0x17
mov edx, dword [ecx + ebx*4 + 0x14]
mov eax, dword [edx + 8]
mov ecx, dword [eax]
mov dword [esi], ecx
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov eax, dword [eax + 8]
mov dword [esi + 8], eax
jmp case.default.0x407477
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0xc]
mov eax, dword [esp + 0xc]
shr ebx, 0xe
shl ebx, 4
add ebx, dword [esp + 0x1c]
push esi
mov dword [edi + 0x18], eax
push ebx
push edi
lea eax, [esp + 0x6c]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x74], 5
call fcn.00406040
mov ecx, dword [edi + 0xc]
add esp, 0xc
mov dword [esp + 0x10], ecx
jmp case.default.0x407477
mov edx, dword [esp + 0xc]
mov eax, ebx
shr eax, 0xe
test eax, 0x100
mov dword [edi + 0x18], edx
je 0x407569
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407573
and eax, 0x1ff
shl eax, 4
add eax, ecx
push esi
push eax
mov eax, ebx
shr eax, 0x17
shl eax, 4
add eax, dword [esp + 0x18]
push edi
call fcn.00406040
mov eax, dword [edi + 0xc]
add esp, 0xc
mov dword [esp + 0x10], eax
jmp case.default.0x407477
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0xc]
mov eax, dword [esp + 0xc]
shr ebx, 0xe
shl ebx, 4
add ebx, dword [esp + 0x1c]
push esi
push ebx
lea ecx, [esp + 0x88]
push ecx
push edi
mov dword [esp + 0x90], edx
mov dword [esp + 0x98], 5
mov dword [edi + 0x18], eax
call fcn.004061a0
mov edx, dword [edi + 0xc]
add esp, 0x10
mov dword [esp + 0x10], edx
jmp case.default.0x407477
mov eax, dword [esp + 0x34]
mov ecx, dword [esi]
shr ebx, 0x17
mov ebx, dword [eax + ebx*4 + 0x14]
mov eax, dword [ebx + 8]
mov dword [eax], ecx
mov edx, dword [esi + 4]
mov dword [eax + 4], edx
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
cmp dword [esi + 8], 4
jl case.default.0x407477
mov ecx, dword [esi]
test byte [ecx + 5], 3
je case.default.0x407477
mov al, byte [ebx + 5]
test al, 4
je case.default.0x407477
mov esi, dword [edi + 0x10]
cmp byte [esi + 0x15], 1
jne 0x407636
push ecx
push esi
call fcn.004028e0
add esp, 8
jmp case.default.0x407477
mov dl, byte [esi + 0x14]
and dl, 3
and al, 0xf8
or dl, al
mov byte [ebx + 5], dl
jmp case.default.0x407477
mov eax, dword [esp + 0xc]
mov dword [edi + 0x18], eax
mov eax, ebx
shr eax, 0xe
test eax, 0x100
je 0x407669
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407673
and eax, 0x1ff
shl eax, 4
add eax, ecx
shr ebx, 0x17
test ebx, 0x100
je 0x40768d
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x407692
shl ebx, 4
add ebx, ecx
push eax
push ebx
push esi
push edi
call fcn.004061a0
mov ecx, dword [edi + 0xc]
add esp, 0x10
mov dword [esp + 0x10], ecx
jmp case.default.0x407477
mov eax, ebx
shr ebx, 0xe
and ebx, 0x1ff
mov ecx, ebx
sar ecx, 3
shr eax, 0x17
and ecx, 0x1f
je 0x4076cd
and ebx, 7
add ebx, 8
add ecx, 0xffffffff
shl ebx, cl
mov ecx, eax
sar ecx, 3
and ecx, 0x1f
je 0x4076e2
and eax, 7
add eax, 8
add ecx, 0xffffffff
shl eax, cl
push ebx
push eax
push edi
call fcn.00403850
mov edx, dword [esp + 0x18]
mov dword [esi], eax
mov dword [esi + 8], 5
add esp, 0xc
mov dword [edi + 0x18], edx
jmp 0x4083bc
mov eax, ebx
shr eax, 0x17
shl eax, 4
mov edx, dword [eax + ecx]
add eax, ecx
mov dword [esi + 0x10], edx
mov edx, dword [eax + 4]
mov dword [esi + 0x14], edx
mov edx, dword [eax + 8]
mov dword [esi + 0x18], edx
mov edx, dword [esp + 0xc]
shr ebx, 0xe
test ebx, 0x100
mov dword [edi + 0x18], edx
je 0x40773f
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x40774a
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
push esi
push ebx
push edi
call fcn.00406040
mov eax, dword [edi + 0xc]
add esp, 0xc
mov dword [esp + 0x10], eax
jmp case.default.0x407477
mov eax, ebx
shr eax, 0x17
test eax, 0x100
je 0x40777b
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407780
shl eax, 4
add eax, ecx
shr ebx, 0xe
test ebx, 0x100
je 0x40779a
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x4077a5
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
mov ecx, 3
cmp dword [eax + 8], ecx
jne 0x4077c2
cmp dword [ebx + 8], ecx
jne 0x4077c2
fld qword [ebx]
fadd qword [eax]
mov dword [esi + 8], ecx
fstp qword [esi]
jmp case.default.0x407477
push 5
jmp 0x4078f9
mov eax, ebx
shr eax, 0x17
test eax, 0x100
je 0x4077e3
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x4077e8
shl eax, 4
add eax, ecx
shr ebx, 0xe
test ebx, 0x100
je 0x407802
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x40780d
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
mov ecx, 3
cmp dword [eax + 8], ecx
jne 0x40782a
cmp dword [ebx + 8], ecx
jne 0x40782a
fld qword [eax]
fsub qword [ebx]
mov dword [esi + 8], ecx
fstp qword [esi]
jmp case.default.0x407477
push 6
jmp 0x4078f9
mov eax, ebx
shr eax, 0x17
test eax, 0x100
je 0x40784b
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407850
shl eax, 4
add eax, ecx
shr ebx, 0xe
test ebx, 0x100
je 0x40786a
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x407875
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
mov ecx, 3
cmp dword [eax + 8], ecx
jne 0x407892
cmp dword [ebx + 8], ecx
jne 0x407892
fld qword [ebx]
fmul qword [eax]
mov dword [esi + 8], ecx
fstp qword [esi]
jmp case.default.0x407477
push 7
jmp 0x4078f9
mov eax, ebx
shr eax, 0x17
test eax, 0x100
je 0x4078b0
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x4078b5
shl eax, 4
add eax, ecx
shr ebx, 0xe
test ebx, 0x100
je 0x4078cf
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x4078da
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
mov ecx, 3
cmp dword [eax + 8], ecx
jne 0x4078f7
cmp dword [ebx + 8], ecx
jne 0x4078f7
fld qword [eax]
fdiv qword [ebx]
mov dword [esi + 8], ecx
fstp qword [esi]
jmp case.default.0x407477
push 8
mov ecx, dword [esp + 0x10]
push ebx
push eax
push edi
mov eax, esi
mov dword [edi + 0x18], ecx
call fcn.00406390
mov edx, dword [edi + 0xc]
add esp, 0x10
mov dword [esp + 0x10], edx
jmp case.default.0x407477
mov eax, ebx
shr eax, 0x17
test eax, 0x100
je 0x407933
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407938
shl eax, 4
add eax, ecx
shr ebx, 0xe
test ebx, 0x100
je 0x407952
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x40795d
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
mov ecx, ebx
mov ebx, 3
cmp dword [eax + 8], ebx
jne 0x40799c
cmp dword [ecx + 8], ebx
jne 0x40799c
fld qword [eax]
sub esp, 8
fst qword [esp + 0x28]
fld qword [ecx]
fst qword [esp + 0x30]
fdivp st(1)
fstp qword [esp]
call fcn.00425010
fmul qword [esp + 0x30]
add esp, 8
mov dword [esi + 8], ebx
fsubr qword [esp + 0x20]
fstp qword [esi]
jmp case.default.0x407477
mov edx, dword [esp + 0xc]
push 9
push ecx
push eax
push edi
mov eax, esi
mov dword [edi + 0x18], edx
call fcn.00406390
mov eax, dword [edi + 0xc]
add esp, 0x10
mov dword [esp + 0x10], eax
jmp case.default.0x407477
mov eax, ebx
shr eax, 0x17
test eax, 0x100
je 0x4079d8
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x4079dd
shl eax, 4
add eax, ecx
shr ebx, 0xe
test ebx, 0x100
mov dword [esp + 0x18], eax
je 0x4079fb
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x407a06
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
mov edx, 3
cmp dword [eax + 8], edx
jne 0x407a2c
cmp dword [ebx + 8], edx
jne 0x407a2c
fld qword [eax]
fld qword [ebx]
call fcn.00424dc0
fstp qword [esi]
mov dword [esi + 8], 3
jmp case.default.0x407477
mov ecx, dword [esp + 0xc]
mov dword [edi + 0x18], ecx
mov ecx, dword [eax + 8]
cmp ecx, edx
je 0x407a81
cmp ecx, 4
jne 0x407ae1
mov edx, dword [esp + 0x18]
mov esi, dword [edx]
add esi, 0x10
lea edi, [esp + 0x50]
call fcn.00402f00
test eax, eax
je 0x407ae1
fld qword [esp + 0x50]
mov esi, dword [esp + 0x14]
mov edi, dword [ebp + 8]
fstp qword [esp + 0xa0]
mov dword [esp + 0xa8], 3
lea eax, [esp + 0xa0]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 8]
cmp eax, 3
je 0x407abf
cmp eax, 4
jne 0x407ae1
mov esi, dword [ebx]
add esi, 0x10
lea edi, [esp + 0x38]
call fcn.00402f00
test eax, eax
je 0x407ae1
fld qword [esp + 0x38]
mov esi, dword [esp + 0x14]
mov edi, dword [ebp + 8]
fstp qword [esp + 0x70]
mov dword [esp + 0x78], 3
lea ebx, [esp + 0x70]
mov ecx, dword [esp + 0x10]
fld qword [ecx]
fld qword [ebx]
call fcn.00424dc0
fstp qword [esi]
mov dword [esi + 8], 3
mov eax, dword [edi + 0xc]
mov dword [esp + 0x10], eax
jmp case.default.0x407477
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edi, dword [ebp + 8]
push 0xa
push edx
push ebx
push esi
push edi
call fcn.00408950
add esp, 0x14
test eax, eax
jne 0x407bec
push ebx
push edi
mov ebx, esi
call fcn.00405320
mov eax, dword [edi + 0xc]
add esp, 8
mov dword [esp + 0x10], eax
jmp case.default.0x407477
shr ebx, 0x17
shl ebx, 4
add ebx, ecx
mov ecx, 3
cmp dword [ebx + 8], ecx
jne 0x407b3a
fld qword [ebx]
mov dword [esi + 8], ecx
fchs
fstp qword [esi]
jmp case.default.0x407477
mov edx, dword [esp + 0xc]
mov dword [edi + 0x18], edx
mov eax, dword [ebx + 8]
cmp eax, ecx
jne 0x407b4e
mov dword [esp + 0x18], ebx
jmp 0x407b86
cmp eax, 4
jne 0x407bc9
mov esi, dword [ebx]
add esi, 0x10
lea edi, [esp + 0x40]
call fcn.00402f00
test eax, eax
je 0x407bc9
fld qword [esp + 0x40]
lea eax, [esp + 0x90]
fstp qword [esp + 0x90]
mov dword [esp + 0x98], 3
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 8]
cmp eax, 3
je 0x407ba5
cmp eax, 4
jne 0x407bc9
mov esi, dword [ebx]
add esi, 0x10
lea edi, [esp + 0x28]
call fcn.00402f00
test eax, eax
je 0x407bc9
mov ecx, dword [esp + 0x18]
fld qword [ecx]
mov eax, dword [esp + 0x14]
mov edi, dword [ebp + 8]
fchs
fstp qword [eax]
mov dword [eax + 8], 3
mov eax, dword [edi + 0xc]
mov dword [esp + 0x10], eax
jmp case.default.0x407477
mov edx, dword [esp + 0x14]
mov edi, dword [ebp + 8]
push 0xb
push edx
push ebx
push ebx
push edi
call fcn.00408950
add esp, 0x14
test eax, eax
jne 0x407bec
push ebx
push edi
call fcn.00405320
add esp, 8
mov eax, dword [edi + 0xc]
mov dword [esp + 0x10], eax
jmp case.default.0x407477
shr ebx, 0x17
shl ebx, 4
mov eax, dword [ebx + ecx + 8]
add ebx, ecx
test eax, eax
je 0x407c22
cmp eax, 1
jne 0x407c12
cmp dword [ebx], 0
je 0x407c22
xor eax, eax
mov dword [esi], eax
mov dword [esi + 8], 1
jmp case.default.0x407477
mov eax, 1
mov dword [esi], eax
mov dword [esi + 8], eax
jmp case.default.0x407477
shr ebx, 0x17
shl ebx, 4
mov eax, dword [ebx + ecx + 8]
add ebx, ecx
sub eax, 4
je 0x407ca2
sub eax, 1
je 0x407c85
mov ecx, dword [esp + 0xc]
push 0xc
push esi
push 0x445c18
push ebx
push edi
mov dword [edi + 0x18], ecx
call fcn.00408950
add esp, 0x14
test eax, eax
jne 0x4083d1
push str.get_length_of
mov eax, ebx
mov esi, edi
call fcn.004052a0
mov edx, dword [edi + 0xc]
add esp, 4
mov dword [esp + 0x10], edx
jmp case.default.0x407477
mov ecx, dword [ebx]
call fcn.00403b90
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
mov dword [esi + 8], 3
fstp qword [esi]
jmp case.default.0x407477
mov eax, dword [ebx]
mov ecx, dword [eax + 0xc]
fild dword [eax + 0xc]
test ecx, ecx
jge 0x407cb4
fadd qword [0x4464d0]
fstp qword [esi]
mov dword [esi + 8], 3
jmp case.default.0x407477
mov edx, dword [esp + 0xc]
mov esi, ebx
shr ebx, 0xe
and ebx, 0x1ff
push ebx
shr esi, 0x17
sub ebx, esi
add ebx, 1
push ebx
push edi
mov dword [edi + 0x18], edx
call fcn.004089f0
mov eax, dword [edi + 0x10]
mov ecx, dword [eax + 0x44]
add esp, 0xc
cmp ecx, dword [eax + 0x40]
jb 0x407cfc
mov ebx, edi
call fcn.00406b70
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0xc]
mov ecx, dword [esp + 0x28]
shl esi, 4
mov edx, dword [esi + eax]
add esi, eax
mov dword [ecx + eax], edx
mov edx, dword [esi + 4]
mov dword [ecx + eax + 4], edx
mov edx, dword [esi + 8]
mov dword [esp + 0x10], eax
mov dword [ecx + eax + 8], edx
jmp case.default.0x407477
mov eax, ebx
shr eax, 0x17
test eax, 0x100
je 0x407d3f
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407d44
shl eax, 4
add eax, ecx
shr ebx, 0xe
test ebx, 0x100
je 0x407d5e
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x407d69
and ebx, 0x1ff
shl ebx, 4
add ebx, ecx
mov edx, dword [esp + 0xc]
mov dword [edi + 0x18], edx
mov ecx, dword [eax + 8]
cmp ecx, dword [ebx + 8]
jne 0x407d91
push ebx
mov ebx, eax
mov eax, dword [ebp + 8]
call fcn.00404190
add esp, 4
test eax, eax
je 0x407d91
mov eax, 1
jmp 0x407d93
xor eax, eax
cmp eax, dword [esp + 0x18]
jne 0x407dad
mov eax, dword [esp + 0xc]
mov edx, dword [eax]
shr edx, 0xe
lea eax, [eax + edx*4 - 0x7fffc]
mov dword [esp + 0xc], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xc]
add dword [esp + 0xc], 4
mov dword [esp + 0x10], edx
mov edi, ecx
jmp case.default.0x407477
mov eax, dword [esp + 0xc]
mov dword [edi + 0x18], eax
mov eax, ebx
shr eax, 0xe
test eax, 0x100
je 0x407de4
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407dee
and eax, 0x1ff
shl eax, 4
add eax, ecx
shr ebx, 0x17
test ebx, 0x100
je 0x407e16
mov esi, dword [ebp + 8]
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
mov edi, eax
mov eax, ebx
mov ecx, esi
call fcn.00404020
jmp 0x407e85
mov esi, dword [ebp + 8]
shl ebx, 4
add ebx, ecx
mov edi, eax
mov eax, ebx
mov ecx, esi
call fcn.00404020
jmp 0x407e85
mov edx, dword [esp + 0xc]
mov eax, ebx
shr eax, 0xe
test eax, 0x100
mov dword [edi + 0x18], edx
je 0x407e4c
and eax, 0xff
shl eax, 4
add eax, dword [esp + 0x1c]
jmp 0x407e56
and eax, 0x1ff
shl eax, 4
add eax, ecx
shr ebx, 0x17
test ebx, 0x100
je 0x407e70
and ebx, 0xff
shl ebx, 4
add ebx, dword [esp + 0x1c]
jmp 0x407e75
shl ebx, 4
add ebx, ecx
mov esi, dword [ebp + 8]
mov edi, eax
push ebx
mov eax, esi
call fcn.004040c0
add esp, 4
cmp eax, dword [esp + 0x18]
jne 0x407e9f
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
shr ecx, 0xe
lea edx, [eax + ecx*4 - 0x7fffc]
mov dword [esp + 0xc], edx
mov eax, dword [esi + 0xc]
add dword [esp + 0xc], 4
mov dword [esp + 0x10], eax
mov edi, esi
jmp case.default.0x407477
mov eax, dword [esi + 8]
test eax, eax
je 0x407ec7
cmp eax, 1
jne 0x407ec3
cmp dword [esi], 0
je 0x407ec7
xor eax, eax
jmp 0x407ecc
mov eax, 1
shr ebx, 0xe
and ebx, 0x1ff
cmp eax, ebx
je 0x407f30
jmp 0x407f1c
mov eax, ebx
shr eax, 0x17
shl eax, 4
add eax, ecx
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x407efa
cmp ecx, 1
jne 0x407ef6
cmp dword [eax], 0
je 0x407efa
xor ecx, ecx
jmp 0x407eff
mov ecx, 1
shr ebx, 0xe
and ebx, 0x1ff
cmp ecx, ebx
je 0x407f30
mov ecx, dword [eax]
mov dword [esi], ecx
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov eax, dword [eax + 8]
mov dword [esi + 8], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
shr ecx, 0xe
lea edx, [eax + ecx*4 - 0x7fffc]
mov dword [esp + 0xc], edx
add dword [esp + 0xc], 4
jmp case.default.0x407477
mov eax, ebx
shr ebx, 0xe
and ebx, 0x1ff
shr eax, 0x17
sub ebx, 1
test eax, eax
je 0x407f57
shl eax, 4
add eax, esi
mov dword [edi + 8], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x18], eax
push ebx
mov eax, esi
mov ecx, edi
call fcn.00407200
add esp, 4
sub eax, 0
je 0x4084b8
sub eax, 1
jne 0x4085bf
test ebx, ebx
jl 0x407f8a
mov ecx, dword [edi + 0x14]
mov edx, dword [ecx + 8]
mov dword [edi + 8], edx
mov eax, dword [edi + 0xc]
mov dword [esp + 0x10], eax
jmp case.default.0x407477
shr ebx, 0x17
je 0x407fa3
shl ebx, 4
add ebx, esi
mov dword [edi + 8], ebx
mov ecx, dword [esp + 0xc]
mov dword [edi + 0x18], ecx
push 0xffffffffffffffff
mov eax, esi
mov ecx, edi
call fcn.00407200
add esp, 4
sub eax, 0
je 0x4084c1
sub eax, 1
jne 0x4085bf
mov edx, dword [edi + 0xc]
mov dword [esp + 0x10], edx
jmp case.default.0x407477
fld qword [esi + 0x20]
fld st(0)
fadd qword [esi]
fld qword [esi + 0x10]
fxch st(2)
fcomp qword [0x446448]
fnstsw ax
fcom st(1)
test ah, 0x41
fnstsw ax
fstp st(1)
jne 0x407fff
test ah, 0x41
jnp 0x408008
jmp 0x407408
test ah, 1
jne 0x407408
mov eax, dword [esp + 0xc]
fst qword [esi]
shr ebx, 0xe
lea ecx, [eax + ebx*4 - 0x7fffc]
mov eax, 3
mov dword [esi + 8], eax
fstp qword [esi + 0x30]
mov dword [esp + 0xc], ecx
mov dword [esi + 0x38], eax
jmp case.default.0x407477
mov eax, dword [esp + 0xc]
mov dword [edi + 0x18], eax
mov eax, dword [esi + 8]
cmp eax, 3
lea edx, [esi + 0x20]
mov dword [esp + 0x18], edx
je 0x40807e
cmp eax, 4
jne 0x40811e
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx]
add esi, 0x10
lea edi, [esp + 0x48]
call fcn.00402f00
test eax, eax
mov esi, dword [esp + 0x14]
mov edi, dword [ebp + 8]
je 0x40811e
fld qword [esp + 0x48]
mov eax, esi
fstp qword [eax]
mov dword [eax + 8], 3
mov eax, dword [esi + 0x18]
cmp eax, 3
je 0x4080c1
cmp eax, 4
jne 0x40812e
mov edx, dword [esp + 0x14]
mov esi, dword [edx + 0x10]
add esi, 0x10
lea edi, [esp + 0x58]
call fcn.00402f00
test eax, eax
mov esi, dword [esp + 0x14]
mov edi, dword [ebp + 8]
je 0x40812e
fld qword [esp + 0x58]
mov eax, esi
fstp qword [eax + 0x10]
mov dword [eax + 0x18], 3
mov eax, dword [esp + 0x18]
cmp dword [eax + 8], 3
je 0x4080f6
mov ebx, eax
call fcn.00403c40
test eax, eax
mov dword [esp + 0x18], eax
jne 0x4080eb
mov ecx, dword [ebp + 8]
push str.for_step_must_be_a_number
push ecx
call fcn.004092e0
add esp, 8
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov edi, dword [ebp + 8]
fld qword [esi]
mov edx, dword [esp + 0x18]
fsub qword [edx]
mov dword [esi + 8], 3
fstp qword [esi]
mov eax, dword [esp + 0xc]
shr ebx, 0xe
lea ecx, [eax + ebx*4 - 0x7fffc]
mov dword [esp + 0xc], ecx
jmp case.default.0x407477
push str.for_initial_value_must_be_a_number
push edi
call fcn.004092e0
add esp, 8
jmp 0x4080f6
push str.for_limit_must_be_a_number
push edi
call fcn.004092e0
add esp, 8
jmp 0x4080f6
mov edx, dword [esi + 0x20]
mov dword [esi + 0x50], edx
mov ecx, dword [esi + 0x24]
lea eax, [esi + 0x30]
mov dword [eax + 0x24], ecx
mov edx, dword [esi + 0x28]
mov dword [eax + 0x28], edx
mov ecx, dword [esi + 0x10]
mov dword [eax + 0x10], ecx
mov edx, dword [esi + 0x14]
mov dword [eax + 0x14], edx
mov ecx, dword [esi + 0x18]
mov dword [eax + 0x18], ecx
mov edx, dword [esi]
mov dword [eax], edx
mov ecx, dword [esi + 4]
mov dword [eax + 4], ecx
mov edx, dword [esi + 8]
shr ebx, 0xe
and ebx, 0x1ff
mov dword [eax + 8], edx
mov edx, dword [esp + 0xc]
push ebx
push eax
lea ecx, [eax + 0x30]
push edi
mov dword [edi + 8], ecx
mov dword [edi + 0x18], edx
call fcn.004087b0
mov eax, dword [edi + 0x14]
mov edx, dword [eax + 8]
mov eax, dword [esp + 0x24]
mov ecx, dword [edi + 0xc]
add eax, 3
shl eax, 4
add eax, ecx
add esp, 0xc
mov dword [edi + 8], edx
cmp dword [eax + 8], 0
mov dword [esp + 0x10], ecx
je 0x4081dd
mov ecx, dword [eax]
mov dword [eax - 0x10], ecx
mov edx, dword [eax + 4]
mov dword [eax - 0xc], edx
mov ecx, dword [eax + 8]
mov dword [eax - 8], ecx
mov eax, dword [esp + 0xc]
mov edx, dword [eax]
shr edx, 0xe
lea eax, [eax + edx*4 - 0x7fffc]
mov dword [esp + 0xc], eax
add dword [esp + 0xc], 4
jmp case.default.0x407477
mov eax, ebx
shr ebx, 0xe
shr eax, 0x17
and ebx, 0x1ff
test eax, eax
mov dword [esp + 0x18], eax
mov ecx, ebx
jne 0x408217
mov eax, dword [edi + 8]
mov edx, dword [edi + 0x14]
mov edx, dword [edx + 8]
sub eax, esi
sar eax, 4
sub eax, 1
mov dword [esp + 0x18], eax
mov dword [edi + 8], edx
test ecx, ecx
jne 0x408228
mov edx, dword [esp + 0xc]
mov ecx, dword [edx]
add edx, 4
mov dword [esp + 0xc], edx
cmp dword [esi + 8], 5
jne case.default.0x407477
mov ebx, dword [esi]
imul ecx, ecx, 0x32
lea ecx, [ecx + eax - 0x32]
cmp ecx, dword [ebx + 0x1c]
mov dword [esp + 0x14], ecx
jle 0x408256
mov eax, ecx
push eax
push edi
mov eax, ebx
call fcn.00405e30
mov eax, dword [esp + 0x20]
add esp, 8
test eax, eax
jle case.default.0x407477
shl eax, 4
add eax, esi
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x14]
push ecx
mov esi, ebx
call fcn.00403910
add esp, 4
cmp eax, 0x445c18
jne 0x4082a5
fild dword [esp + 0x14]
lea edx, [esp + 0xb0]
push edx
push ebx
push edi
fstp qword [esp + 0xbc]
mov dword [esp + 0xc4], 3
call fcn.00405f50
add esp, 0xc
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
sub dword [esp + 0x14], 1
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
cmp dword [ecx + 8], 4
jl 0x4082e4
mov eax, dword [ecx]
test byte [eax + 5], 3
je 0x4082e4
mov al, byte [ebx + 5]
test al, 4
je 0x4082e4
mov edx, dword [edi + 0x10]
and al, 0xfb
mov byte [ebx + 5], al
mov eax, dword [edx + 0x28]
mov dword [ebx + 0x18], eax
mov dword [edx + 0x28], ebx
mov eax, dword [esp + 0x18]
sub eax, 1
sub ecx, 0x10
test eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ecx
jg 0x408267
jmp case.default.0x407477
mov ecx, dword [esp + 0x14]
mov edi, dword [ebp + 8]
push ecx
call fcn.00405520
add esp, 4
jmp case.default.0x407477
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 0x10]
mov ecx, dword [edx + 0x10]
mov edx, dword [eax + 0xc]
shr ebx, 0xe
mov ebx, dword [ecx + ebx*4]
mov dword [esp + 0x28], ebx
movzx ebx, byte [ebx + 0x48]
push edx
mov eax, ebx
mov ecx, edi
call fcn.004054b0
mov ecx, dword [esp + 0x2c]
add esp, 4
test ebx, ebx
mov dword [esp + 0x14], eax
mov dword [eax + 0x10], ecx
jle 0x4083a8
mov edx, eax
add edx, 0x14
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x18], edx
mov eax, dword [ebx]
mov ecx, eax
and cl, 0x3f
shr eax, 0x17
cmp cl, 4
jne 0x40837f
mov edx, dword [esp + 0x34]
mov eax, dword [edx + eax*4 + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
jmp 0x408393
shl eax, 4
add eax, dword [esp + 0x10]
mov edx, edi
call fcn.00402710
mov edx, dword [esp + 0x18]
mov dword [edx], eax
add dword [esp + 0x18], 4
add ebx, 4
sub dword [esp + 0x20], 1
jne 0x408360
mov dword [esp + 0xc], ebx
jmp 0x4083ac
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov dword [esi], eax
mov dword [esi + 8], 6
mov dword [edi + 0x18], ebx
mov eax, dword [edi + 0x10]
mov ecx, dword [eax + 0x44]
cmp ecx, dword [eax + 0x40]
jb 0x4083d1
mov ebx, edi
call fcn.00406b70
mov edi, dword [ebp + 8]
mov edx, dword [edi + 0xc]
mov dword [esp + 0x10], edx
jmp case.default.0x407477
mov ecx, dword [edi + 0x14]
shr ebx, 0x17
sub ebx, 1
mov eax, ebx
mov ebx, dword [ecx]
sub ebx, dword [ecx + 4]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x10]
movzx ecx, byte [edx + 0x49]
sar ebx, 4
sub ebx, ecx
sub ebx, 1
cmp eax, 0xffffffff
mov dword [esp + 0x20], eax
jne 0x40845d
mov eax, dword [edi + 0x1c]
sub eax, dword [edi + 8]
mov edx, dword [esp + 0xc]
mov ecx, ebx
shl ecx, 4
cmp eax, ecx
mov dword [edi + 0x18], edx
mov dword [esp + 0x20], ecx
jg 0x40843f
mov eax, dword [edi + 0x2c]
cmp ebx, eax
mov esi, edi
jg 0x408434
add eax, eax
jmp 0x408436
add eax, ebx
call fcn.00401f80
mov ecx, dword [esp + 0x20]
mov eax, dword [edi + 0xc]
mov edx, dword [esp + 0x28]
add edx, eax
mov dword [esp + 0x10], eax
mov eax, ebx
add ecx, edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
mov dword [edi + 8], ecx
mov esi, edx
xor edx, edx
test eax, eax
mov dword [esp + 0x28], edx
jle case.default.0x407477
mov ecx, ebx
neg ecx
shl ecx, 4
add esi, 8
cmp edx, ebx
jge 0x40849c
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
mov edx, dword [eax + ecx]
add eax, ecx
mov dword [esi - 8], edx
mov edx, dword [eax + 4]
mov dword [esi - 4], edx
mov eax, dword [eax + 8]
mov edx, dword [esp + 0x28]
mov dword [esi], eax
mov eax, dword [esp + 0x20]
jmp 0x4084a2
mov dword [esi], 0
add edx, 1
add ecx, 0x10
add esi, 0x10
cmp edx, eax
mov dword [esp + 0x28], edx
jl 0x408475
jmp case.default.0x407477
add dword [ebp + 0xc], 1
jmp 0x4073df
mov esi, dword [edi + 0x14]
mov ecx, dword [esi + 4]
mov ebx, dword [esi - 0x14]
sub esi, 0x18
cmp dword [edi + 0x68], 0
mov dword [esp + 0x20], ecx
je 0x4084e9
mov ecx, dword [esi]
mov edi, dword [ebp + 8]
push ecx
call fcn.00405520
mov ecx, dword [esp + 0x24]
add esp, 4
mov edx, dword [esi + 0x18]
mov eax, dword [esi + 4]
sub edx, ecx
sar edx, 4
shl edx, 4
add eax, edx
mov dword [esi], eax
xor edx, edx
cmp ecx, dword [edi + 8]
mov dword [edi + 0xc], eax
mov dword [esp + 0x28], edx
jae 0x40853e
xor eax, eax
jmp 0x408510
mov edx, dword [ecx]
mov dword [eax + ebx], edx
mov edx, dword [ecx + 4]
mov dword [eax + ebx + 4], edx
mov ecx, dword [ecx + 8]
mov edx, dword [esp + 0x28]
mov dword [eax + ebx + 8], ecx
mov ecx, dword [esp + 0x20]
add edx, 1
mov eax, edx
shl eax, 4
add ecx, eax
cmp ecx, dword [edi + 8]
mov dword [esp + 0x28], edx
jb 0x408510
shl edx, 4
lea eax, [edx + ebx]
mov dword [edi + 8], eax
mov dword [esi + 8], eax
mov edx, dword [edi + 0x18]
add dword [esi + 0x14], 1
mov dword [esi + 0xc], edx
add dword [edi + 0x14], 0xffffffe8
jmp 0x4073df
shr ebx, 0x17
je 0x40856c
shl ebx, 4
lea eax, [ebx + esi - 0x10]
mov dword [edi + 8], eax
cmp dword [edi + 0x68], 0
je 0x408586
mov ecx, dword [esp + 0x10]
mov edi, dword [ebp + 8]
push ecx
call fcn.00405520
mov esi, dword [esp + 0x18]
add esp, 4
mov edx, dword [esp + 0xc]
mov eax, esi
mov ecx, edi
mov dword [edi + 0x18], edx
call fcn.00402200
sub dword [ebp + 0xc], 1
je 0x4085bf
test eax, eax
je 0x4073df
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x14]
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
jmp 0x4073df
mov eax, dword [esp + 0xc]
add eax, 0xfffffffc
mov dword [edi + 0x18], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret