Function at 0x408b20
Capabilities:
Read file on windows
Resolve function by parsing pe exports

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0xcc
push ebx
push ebp
push esi
push edi
push 0x45f304
push eax
call dword [sym.imp.MSVCRT.DLL_fopen]
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x408b4e
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xcc
ret
push 0x2c
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x408b69
mov ecx, eax
call fcn.0040a6a0
mov ebp, eax
test ebp, ebp
jne 0x408b76
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xcc
ret
mov edi, dword [sym.imp.MSVCRT.DLL_fseek]
push 0
push 0
push ebx
call edi
mov esi, dword [sym.imp.MSVCRT.DLL_fread]
push ebx
push 1
lea ecx, [esp + 0x48]
push 8
push ecx
mov dword [esp + 0x38], 0
call esi
mov eax, dword [esp + 0x50]
add esp, 0x1c
cmp eax, 0x7777
ja 0x4093c8
je 0x4092d4
cmp eax, 9
ja 0x408f1c
je 0x408d57
dec eax
jne 0x4093da
mov eax, dword [esp + 0x38]
cmp eax, 0x2c
jne 0x408c8e
push 0
push 0
push ebx
mov dword [ebp + 0x18], 0x4444
call edi
push ebx
push 1
lea edx, [esp + 0x48]
push 8
push edx
call esi
add esp, 0x1c
test eax, eax
je 0x408d48
mov edi, dword [sym.imp.MSVCRT.DLL_ftell]
cmp dword [esp + 0x34], 9
jne 0x408c53
push ebx
push 1
lea eax, [esp + 0x3c]
push 8
push eax
call esi
add esp, 0x10
test eax, eax
je 0x408d48
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jne 0x408c4e
mov ecx, dword [esp + 0x38]
push ebp
push ecx
push ebx
call edi
add esp, 4
push eax
push ebx
call fcn.00406da0
mov eax, dword [esp + 0x2c]
add esp, 0x10
inc eax
mov dword [esp + 0x1c], eax
jmp 0x408c0a
cmp eax, 9
je 0x408c0a
mov edx, dword [esp + 0x38]
push ebp
add edx, 8
push edx
push ebx
call edi
add esp, 4
sub eax, 8
push eax
push ebx
call fcn.00406da0
push ebx
push 1
lea eax, [esp + 0x4c]
push 8
push eax
call esi
add esp, 0x20
test eax, eax
jne 0x408c03
push ebx
call dword [sym.imp.MSVCRT.DLL_fclose]
add esp, 4
jmp 0x40a182
cmp eax, 4
jne 0x408d43
push 0
push 0
push ebx
mov dword [ebp + 0x18], 0x3333
call edi
push ebx
push 1
lea ecx, [esp + 0x48]
push 8
push ecx
call esi
add esp, 0x1c
test eax, eax
je 0x408d48
mov edi, dword [esp + 0x1c]
cmp dword [esp + 0x34], 0x11
jne 0x408d04
push ebx
push 1
lea edx, [esp + 0x3c]
push 8
push edx
call esi
add esp, 0x10
test eax, eax
je 0x408d48
mov eax, dword [esp + 0x34]
cmp eax, edi
jne 0x408cff
mov eax, dword [esp + 0x38]
push ebp
push eax
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
add esp, 4
push eax
push ebx
call fcn.00406da0
add esp, 0x10
inc edi
jmp 0x408cc7
cmp eax, 0x11
je 0x408cc7
mov ecx, dword [esp + 0x38]
push ebp
add ecx, 8
push ecx
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
add esp, 4
sub eax, 8
push eax
push ebx
call fcn.00406da0
push ebx
push 1
lea edx, [esp + 0x4c]
push 8
push edx
call esi
add esp, 0x20
test eax, eax
jne 0x408cc0
push ebx
call dword [sym.imp.MSVCRT.DLL_fclose]
add esp, 4
jmp 0x40a182
cmp eax, 0x40
je 0x408d57
push ebx
call dword [sym.imp.MSVCRT.DLL_fclose]
add esp, 4
jmp 0x40a182
xor eax, eax
mov dword [ebp + 0x18], 0x4ae0
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], eax
push 0
mov dword [esp + 0x20], 0
push 0
push ebx
call edi
add esp, 0xc
push ebx
push 1
lea eax, [esp + 0x3c]
push 8
push eax
call esi
add esp, 0x10
test eax, eax
je 0x408e24
mov eax, dword [esp + 0x34]
cmp eax, 0x10
je 0x408ede
cmp eax, 0xf
jne 0x408db5
push 0
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
add esp, 4
add eax, 0x10
push eax
jmp 0x408d74
cmp eax, 9
je 0x408ddc
mov ecx, dword [esp + 0x38]
push ebp
add ecx, 8
push ecx
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
add esp, 4
sub eax, 8
push eax
push ebx
call fcn.004066e0
add esp, 0x10
jmp 0x408d7a
push ebx
push 1
lea edx, [esp + 0x3c]
push 8
push edx
call esi
add esp, 0x10
test eax, eax
je 0x408e24
mov edi, dword [esp + 0x1c]
cmp dword [esp + 0x34], edi
jne 0x408e24
mov eax, dword [esp + 0x38]
push ebp
push eax
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
add esp, 4
push eax
push ebx
call fcn.004066e0
push ebx
push 1
lea ecx, [esp + 0x4c]
push 8
push ecx
inc edi
call esi
add esp, 0x20
test eax, eax
jne 0x408df3
mov edi, dword [esp + 0x40]
mov esi, dword [sym.imp.MSVCRT.DLL_fclose]
push ebx
call esi
mov eax, dword [esp + 0x34]
add esp, 4
test eax, eax
je 0x408ecd
mov edi, dword [esp + 0xe0]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, dword [esp + 0x30]
mov edx, ecx
mov esi, edi
mov edi, 0x463eb4
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push str._s.mesh
and ecx, 3
push str.dynamic_
rep movsb byte es:[edi], byte [esi]
push 0x463eb4
call dword [sym.imp.MSVCRT.DLL_strstr]
add esp, 8
push eax
call dword [sym.imp.MSVCRT.DLL_sprintf]
push 0x45f328
push 0x463eb4
call dword [sym.imp.MSVCRT.DLL_fopen]
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x4093e4
push 0x45f32c
push 0
call dword [sym.imp.MSVCRT.DLL_strtok]
mov esi, dword [sym.imp.MSVCRT.DLL_fread]
mov edi, dword [sym.imp.MSVCRT.DLL_fseek]
add esp, 8
mov dword [esp + 0x30], eax
jmp 0x408d68
push ebx
call esi
push edi
call sub.MSVCRT.DLL_void___cdecl_operator_delete_void__
add esp, 8
jmp 0x40a182
mov ecx, dword [esp + 0x38]
push ecx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
push ebx
mov edi, eax
push 1
push 4
push edi
mov dword [esp + 0x54], edi
call esi
mov edx, dword [esp + 0x4c]
push ebx
add edx, 0xfffffffc
push 1
push edx
push edi
call esi
push 0x45f310
push edi
call dword [sym.imp.MSVCRT.DLL_strtok]
add esp, 0x2c
mov dword [esp + 0x30], eax
jmp 0x408e28
cmp eax, 0x101
jb 0x4093da
cmp eax, 0x102
ja 0x4093da
push 0
push 0
push ebx
mov dword [ebp + 0x18], eax
call edi
push ebx
push 1
lea eax, [esp + 0x88]
push 0x68
push eax
call esi
mov ecx, dword [ebp + 4]
mov edx, dword [ebp]
push ecx
push 0x44
push edx
call fcn.004066b0
mov ecx, dword [ebp + 8]
mov dword [ebp], eax
mov eax, dword [ebp + 0xc]
push eax
push 0x12
push ecx
call fcn.004066b0
mov ecx, dword [ebp + 4]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0xc4]
inc ecx
mov dword [ebp + 4], ecx
lea edx, [eax + eax*2]
shl edx, 2
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [esp + 0xc8]
mov edi, eax
mov eax, dword [ebp]
mov dword [eax], ecx
mov eax, dword [esp + 0xc8]
lea edx, [eax + eax*4]
shl edx, 2
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp]
push ebx
mov dword [ecx + 4], eax
mov edx, dword [esp + 0xd0]
push edx
push 0xc
push edi
call esi
mov ecx, dword [esp + 0xdc]
add esp, 0x4c
xor eax, eax
test ecx, ecx
mov dword [esp + 0x18], eax
jbe 0x409008
lea ecx, [eax + eax*2]
lea eax, [eax + eax*4]
lea edx, [edi + ecx*4]
mov ecx, dword [ebp]
mov ecx, dword [ecx + 4]
lea eax, [ecx + eax*4]
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
mov edx, dword [edx + 8]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x90]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jb 0x408fd2
push edi
call sub.MSVCRT.DLL_void___cdecl_operator_delete_void__
mov eax, dword [esp + 0x94]
lea eax, [eax + eax*2]
shl eax, 2
push eax
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp]
push ebx
mov dword [ecx + 8], eax
mov eax, dword [ebp]
mov edx, dword [esp + 0x9c]
mov ecx, dword [eax + 8]
push edx
push 0xc
push ecx
call esi
mov eax, dword [esp + 0xa4]
lea edx, [eax + eax*2]
mov eax, dword [ebp]
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0xa4]
lea ecx, [eax + eax*2]
shl ecx, 1
push ecx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov edx, dword [ebp]
push ebx
mov dword [edx + 0x10], eax
mov ecx, dword [ebp]
mov eax, dword [esp + 0xac]
mov edx, dword [ecx + 0x10]
push eax
push 6
push edx
call esi
xor eax, eax
add esp, 0x2c
mov dword [esp + 0x18], eax
mov ecx, dword [ebp]
mov edx, dword [ecx + 0xc]
test edx, edx
jbe 0x4090be
mov ecx, dword [ecx + 0x10]
xor edx, edx
mov di, word [ecx + eax*2 + 4]
mov dx, word [ecx + eax*2]
mov word [ecx + eax*2], di
mov eax, dword [ebp]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x18]
mov word [ecx + eax*2 + 4], dx
mov eax, dword [esp + 0x18]
add eax, 3
mov dword [esp + 0x18], eax
mov ecx, dword [ebp]
cmp eax, dword [ecx + 0xc]
jb 0x40908a
mov ecx, dword [esp + 0x90]
lea edx, [ecx*8]
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov edi, eax
mov eax, dword [esp + 0x94]
push ebx
push eax
push 8
push edi
call esi
mov ecx, dword [esp + 0xa4]
add esp, 0x14
xor eax, eax
test ecx, ecx
mov dword [esp + 0x18], eax
jbe 0x409123
mov edx, dword [ebp]
lea ecx, [edi + eax*8]
lea eax, [eax + eax*4]
mov edx, dword [edx + 4]
mov esi, dword [ecx]
mov dword [edx + eax*4 + 0xc], esi
mov ecx, dword [ecx + 4]
mov dword [edx + eax*4 + 0x10], ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x90]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jb 0x4090f6
push edi
call sub.MSVCRT.DLL_void___cdecl_operator_delete_void__
push 0x104
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov edx, dword [ebp + 8]
push 0xa
mov dword [edx + 4], eax
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 8]
mov edi, 0x45f308
push 2
push 0
mov dword [ecx + 8], eax
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [ebp + 8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov eax, ecx
mov esi, edi
mov edi, dword [edx + 8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0xa8]
shl edx, 5
lea ecx, [eax + eax*2]
lea edi, [edx + ecx*2 + 0x68]
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
mov esi, eax
sub esi, edi
push esi
mov dword [esp + 0x50], esi
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
push 0
push edi
push ebx
mov dword [esp + 0x6c], eax
call dword [sym.imp.MSVCRT.DLL_fseek]
mov edi, dword [esp + 0x6c]
push ebx
push 1
push esi
push edi
call dword [sym.imp.MSVCRT.DLL_fread]
add esp, 0x3c
mov edx, edi
test esi, esi
je 0x409235
mov eax, dword [edx]
cmp eax, 0x7364642e
jne 0x409223
test al, al
je 0x4091df
mov al, byte [edx - 1]
dec edx
test al, al
jne 0x4091d7
lea edi, [edx + 1]
or ecx, 0xffffffff
xor eax, eax
mov esi, dword [ebp + 8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x48], esi
mov esi, edi
mov edi, dword [esp + 0x48]
mov eax, ecx
mov edi, dword [edi + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 4]
or ecx, 0xffffffff
mov edi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [ecx + esi - 4], al
jmp 0x40922d
mov eax, dword [esp + 0x30]
inc edx
dec eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4091ca
mov edx, dword [esp + 0x40]
push edx
call sub.MSVCRT.DLL_void___cdecl_operator_delete_void__
mov ecx, dword [ebp]
xor eax, eax
add esp, 4
mov dword [ecx + 0x14], eax
mov ecx, dword [esp + 0x90]
mov dword [ebp + 0xc], 1
cmp ecx, eax
mov dword [esp + 0x18], eax
jbe 0x4092c5
mov edx, dword [ebp]
lea eax, [eax + eax*4]
mov ecx, dword [edx + 4]
fld dword [ecx + eax*4]
fmul dword [0x451910]
lea eax, [ecx + eax*4]
fstp dword [eax]
mov edx, dword [ebp]
mov eax, dword [esp + 0x18]
mov ecx, dword [edx + 4]
lea eax, [eax + eax*4]
fld dword [ecx + eax*4 + 4]
fmul dword [0x451910]
lea eax, [ecx + eax*4 + 4]
fstp dword [eax]
mov edx, dword [ebp]
mov eax, dword [esp + 0x18]
mov ecx, dword [edx + 4]
lea eax, [eax + eax*4]
fld dword [ecx + eax*4 + 8]
fmul dword [0x451910]
lea eax, [ecx + eax*4 + 8]
fstp dword [eax]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x90]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jb 0x409260
push ebx
call dword [sym.imp.MSVCRT.DLL_fclose]
add esp, 4
jmp 0x40a182
push 0
push 8
push ebx
mov dword [ebp + 0x18], 0x7777
call edi
add esp, 0xc
push ebx
push 1
lea edx, [esp + 0x3c]
push 8
push edx
call esi
mov eax, dword [esp + 0x44]
add esp, 0x10
cmp eax, 0x910
jne 0x409373
push ebx
push 1
lea eax, [esp + 0x3c]
push 8
push eax
call esi
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
mov ecx, dword [esp + 0x30]
mov edi, eax
mov eax, dword [esp + 0x48]
add esp, 0x14
cmp eax, ecx
jne 0x40936d
mov ecx, dword [esp + 0x38]
push ebp
push ecx
push edi
push ebx
call fcn.00407d80
mov edx, dword [esp + 0x2c]
push 0
inc edx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x4c]
add edi, edx
push edi
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea eax, [esp + 0x58]
push 8
push eax
call esi
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
mov ecx, dword [esp + 0x4c]
mov edi, eax
mov eax, dword [esp + 0x64]
add esp, 0x30
cmp eax, ecx
je 0x409323
mov edi, dword [sym.imp.MSVCRT.DLL_fseek]
cmp eax, 0x905
jb 0x409381
cmp eax, 0x907
jbe 0x40939c
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
mov edx, dword [esp + 0x3c]
push 0
add eax, edx
push eax
push ebx
call edi
add esp, 0x10
jmp 0x4092e5
mov ecx, dword [esp + 0x38]
push ebp
add ecx, 8
push ecx
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
add esp, 4
sub eax, 8
push eax
push ebx
call fcn.00407d80
push ebx
call dword [sym.imp.MSVCRT.DLL_fclose]
add esp, 0x14
jmp 0x40a182
cmp eax, 0x20534444
je 0x409d2a
cmp eax, 0x5344000e
je 0x4093f1
push ebx
call dword [sym.imp.MSVCRT.DLL_fclose]
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xcc
ret
push 0
push 0x10
push ebx
mov dword [ebp + 0x18], 0x5344000e
call edi
push ebx
push 1
lea edx, [esp + 0x34]
push 2
push edx
call esi
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
mov dword [esp + 0x64], eax
push ebx
push 1
lea eax, [esp + 0x3c]
push 4
push eax
call esi
mov eax, dword [esp + 0x44]
add esp, 0x30
and eax, 0xffffff
mov dword [esp + 0x14], eax
cmp eax, 0x362e30
mov eax, dword [esp + 0x20]
jne 0x409444
add eax, 4
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x44]
and eax, 0xffff
add eax, edx
push 0
push eax
push ebx
call edi
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, 0x362e30
push ebx
push 1
je 0x409499
lea ecx, [esp + 0x28]
push 2
push ecx
call esi
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
mov edx, dword [esp + 0x34]
push 0
and edx, 0xffff
add eax, edx
push eax
push ebx
call edi
push ebx
push 1
lea eax, [esp + 0x70]
push 1
push eax
call esi
add esp, 0x30
jmp 0x4094d6
lea ecx, [esp + 0x50]
push 1
push ecx
call esi
push ebx
push 1
lea edx, [esp + 0x2b]
push 1
push edx
call esi
push ebx
push 1
lea eax, [esp + 0x48]
push 2
push eax
call esi
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
mov ecx, dword [esp + 0x54]
push 0
and ecx, 0xffff
add eax, ecx
push eax
push ebx
call edi
add esp, 0x40
mov edx, dword [ebp + 4]
mov eax, dword [ebp]
push edx
push 0x44
push eax
call fcn.004066b0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
push ecx
push 0x12
push edx
mov dword [ebp], eax
call fcn.004066b0
mov dword [ebp + 8], eax
push ebx
push 1
lea eax, [esp + 0x40]
push 2
push eax
call esi
mov ecx, dword [esp + 0x48]
and ecx, 0xffff
inc ecx
push ecx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 0xc]
push ebx
push 1
lea edx, [ecx + ecx*8]
mov ecx, dword [ebp + 8]
mov dword [ecx + edx*2 + 8], eax
mov eax, dword [ebp + 0xc]
mov edx, dword [esp + 0x54]
mov ecx, dword [ebp + 8]
and edx, 0xffff
lea eax, [eax + eax*8]
push edx
mov edx, dword [ecx + eax*2 + 8]
push edx
call esi
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x5c]
push ebx
lea eax, [eax + eax*8]
and edx, 0xffff
push 1
push 2
mov eax, dword [ecx + eax*2 + 8]
lea ecx, [esp + 0x68]
push ecx
mov byte [eax + edx], 0
call esi
mov edx, dword [esp + 0x6c]
add esp, 0x4c
and edx, 0xffff
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov edi, eax
mov eax, dword [esp + 0x24]
push ebx
and eax, 0xffff
push 1
push eax
push edi
mov dword [esp + 0x38], edi
call esi
mov eax, dword [esp + 0x34]
add esp, 0x14
xor esi, esi
and eax, 0xffff
mov dword [esp + 0x44], esi
mov dword [esp + 0x40], eax
jbe 0x4095c7
mov cl, byte [edi + esi]
cmp cl, 0x2e
jne 0x4095b8
mov dword [esp + 0x40], esi
jmp 0x4095c2
cmp cl, 0x5c
jne 0x4095c2
inc esi
mov dword [esp + 0x44], esi
inc esi
cmp esi, eax
jb 0x4095aa
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
sub esi, edi
lea ecx, [esi + 1]
push ecx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 0xc]
lea edx, [ecx + ecx*8]
mov ecx, dword [ebp + 8]
mov dword [ecx + edx*2 + 4], eax
mov edx, dword [esp + 0x28]
mov eax, dword [ebp + 0xc]
mov ecx, esi
lea esi, [edi + edx]
mov edx, dword [ebp + 8]
lea eax, [eax + eax*8]
mov edi, dword [edx + eax*2 + 4]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
lea ecx, [eax + eax*8]
mov eax, dword [edx + ecx*2 + 4]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x28]
sub eax, ecx
mov ecx, dword [esp + 0x44]
push edx
mov byte [eax + ecx], 0
call sub.MSVCRT.DLL_void___cdecl_operator_delete_void__
mov edi, dword [sym.imp.MSVCRT.DLL_fread]
push ebx
push 1
lea eax, [esp + 0x30]
push 2
push eax
call edi
mov esi, dword [sym.imp.MSVCRT.DLL_ftell]
push ebx
call esi
mov ecx, dword [esp + 0x3c]
push 0
and ecx, 0xffff
add eax, ecx
push eax
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea edx, [esp + 0x50]
push 2
push edx
call edi
push ebx
call esi
mov ecx, dword [esp + 0x5c]
push 0
and ecx, 0xffff
add eax, ecx
push eax
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
add esp, 0x48
lea edx, [esp + 0x20]
push ebx
push 1
push 2
push edx
call edi
push ebx
call esi
mov ecx, dword [esp + 0x34]
push 0
and ecx, 0xffff
add eax, ecx
push eax
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea edx, [esp + 0x48]
push 2
push edx
call edi
push ebx
call esi
mov ecx, dword [esp + 0x54]
add esp, 0x34
and ecx, 0xffff
add eax, ecx
mov ecx, dword [esp + 0x14]
push 0
cmp ecx, 0x362e30
push eax
push ebx
jne 0x4096ea
call dword [sym.imp.MSVCRT.DLL_fseek]
add esp, 0xc
jmp 0x409847
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea edx, [esp + 0x64]
push 0x18
push edx
call dword [sym.imp.MSVCRT.DLL_fread]
fld dword [esp + 0x6c]
fmul dword [0x451910]
mov eax, dword [ebp + 4]
mov edx, dword [ebp]
mov ecx, eax
lea esi, [esp + 0x6c]
shl ecx, 4
fstp dword [esp + 0x6c]
fld dword [esp + 0x70]
fmul dword [0x451910]
add ecx, eax
lea edi, [edx + ecx*4 + 0x1c]
mov ecx, 6
fstp dword [esp + 0x70]
fld dword [esp + 0x74]
fmul dword [0x451910]
fstp dword [esp + 0x74]
fld dword [esp + 0x78]
fmul dword [0x451910]
fstp dword [esp + 0x78]
fld dword [esp + 0x7c]
fmul dword [0x451910]
fstp dword [esp + 0x7c]
fld dword [esp + 0x80]
fmul dword [0x451910]
fstp dword [esp + 0x80]
rep movsd dword es:[edi], dword [esi]
fld dword [esp + 0x78]
fadd dword [esp + 0x6c]
fmul dword [0x451994]
mov eax, dword [ebp + 4]
mov edx, dword [ebp]
mov ecx, eax
fstp dword [esp + 0x84]
fld dword [esp + 0x7c]
fadd dword [esp + 0x70]
shl ecx, 4
add ecx, eax
fmul dword [0x451994]
lea eax, [edx + ecx*4 + 0x34]
mov ecx, dword [esp + 0x84]
fstp dword [esp + 0x88]
fld dword [esp + 0x80]
fadd dword [esp + 0x74]
mov edx, dword [esp + 0x88]
mov dword [eax], ecx
fmul dword [0x451994]
mov dword [eax + 4], edx
fstp dword [esp + 0x8c]
mov ecx, dword [esp + 0x8c]
mov dword [eax + 8], ecx
fld dword [esp + 0x74]
fsub dword [esp + 0x80]
fld dword [esp + 0x70]
fsub dword [esp + 0x7c]
fld dword [esp + 0x6c]
fsub dword [esp + 0x78]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
mov eax, dword [ebp + 4]
push ebx
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ebp]
fmul qword [0x451908]
fstp st(3)
fstp st(0)
fstp st(0)
fstp dword [eax + edx*4 + 0x40]
call dword [sym.imp.MSVCRT.DLL_ftell]
add eax, 9
push 0
push eax
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
add esp, 0x2c
mov eax, dword [esp + 0x14]
push ebx
cmp eax, 0x362e30
push 1
mov dword [esp + 0x24], 0
push 4
je 0x4099cb
mov esi, dword [sym.imp.MSVCRT.DLL_fread]
lea ecx, [esp + 0x3c]
push ecx
call esi
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x40]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ebp]
mov dword [eax + edx*4 + 0xc], ecx
mov edx, dword [esp + 0x40]
lea eax, [edx + edx]
push eax
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 4]
push ebx
mov edx, ecx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
mov dword [ecx + edx*4 + 0x10], eax
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x48]
mov ecx, eax
shl ecx, 4
push edx
mov edx, dword [ebp]
add ecx, eax
push 2
mov eax, dword [edx + ecx*4 + 0x10]
push eax
call esi
push ebx
push 1
lea ecx, [esp + 0x48]
push 2
push ecx
call esi
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x50]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ebp]
mov dword [eax + edx*4], ecx
mov eax, dword [esp + 0x50]
lea edx, [eax + eax*4]
shl edx, 2
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 4]
add esp, 0x38
mov edx, ecx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
mov dword [ecx + edx*4 + 4], eax
mov ecx, dword [esp + 0x1c]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x3c], eax
jbe 0x409944
mov ecx, dword [ebp + 4]
lea eax, [eax + eax*4]
mov edx, ecx
push ebx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
push 1
push 0xc
mov ecx, dword [ecx + edx*4 + 4]
lea edx, [ecx + eax*4]
push edx
call esi
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x2c]
add esp, 0x10
inc eax
cmp eax, ecx
mov dword [esp + 0x3c], eax
jb 0x409911
lea eax, [ecx + ecx*2]
shl eax, 2
push eax
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 4]
push ebx
mov edx, ecx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
mov dword [ecx + edx*4 + 8], eax
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x24]
mov ecx, eax
shl ecx, 4
push edx
mov edx, dword [ebp]
add ecx, eax
push 0xc
mov eax, dword [edx + ecx*4 + 8]
push eax
call esi
mov ecx, dword [esp + 0x30]
add esp, 0x14
xor eax, eax
test ecx, ecx
mov dword [esp + 0x3c], eax
jbe 0x409b2f
mov ecx, dword [ebp + 4]
lea eax, [eax + eax*4]
mov edx, ecx
push ebx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
push 1
push 8
mov ecx, dword [ecx + edx*4 + 4]
lea edx, [ecx + eax*4 + 0xc]
push edx
call esi
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x2c]
add esp, 0x10
inc eax
cmp eax, ecx
mov dword [esp + 0x3c], eax
jb 0x409992
jmp 0x409b2f
mov esi, dword [sym.imp.MSVCRT.DLL_fread]
lea eax, [esp + 0x48]
push eax
call esi
push ebx
push 1
lea ecx, [esp + 0x34]
push 4
push ecx
call esi
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x3c]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ebp]
mov dword [eax + edx*4], ecx
mov eax, dword [esp + 0x3c]
lea edx, [eax + eax*4]
shl edx, 2
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 4]
mov edx, ecx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
mov dword [ecx + edx*4 + 4], eax
mov eax, dword [esp + 0x40]
lea edx, [eax + eax*2]
shl edx, 2
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 4]
push ebx
mov edx, ecx
push 1
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
push 4
mov dword [ecx + edx*4 + 8], eax
lea edx, [esp + 0x64]
push edx
call esi
mov eax, dword [ebp + 4]
mov edx, dword [ebp]
mov ecx, eax
shl ecx, 4
add ecx, eax
mov eax, dword [esp + 0x68]
mov dword [edx + ecx*4 + 0xc], eax
mov ecx, dword [esp + 0x68]
lea edx, [ecx + ecx]
push edx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 4]
push ebx
mov edx, ecx
push 1
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
push 1
mov dword [ecx + edx*4 + 0x10], eax
lea edx, [esp + 0x5b]
push edx
call esi
mov ecx, dword [esp + 0x68]
add esp, 0x4c
xor eax, eax
test ecx, ecx
mov dword [esp + 0x3c], eax
jbe 0x409b10
mov ecx, dword [ebp + 4]
lea eax, [eax + eax*4]
mov edx, ecx
push ebx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
push 1
push 0xc
mov ecx, dword [ecx + edx*4 + 4]
lea edx, [ecx + eax*4]
push edx
call esi
mov eax, dword [ebp + 4]
mov edx, dword [ebp]
mov ecx, eax
push ebx
shl ecx, 4
add ecx, eax
mov eax, dword [esp + 0x50]
push 1
push 0xc
mov ecx, dword [edx + ecx*4 + 8]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*4]
push edx
call esi
mov eax, dword [ebp + 4]
mov edx, dword [ebp]
mov ecx, eax
push ebx
shl ecx, 4
add ecx, eax
mov eax, dword [esp + 0x60]
push 1
push 8
mov ecx, dword [edx + ecx*4 + 4]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*4 + 0xc]
push edx
call esi
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x4c]
add esp, 0x30
inc eax
cmp eax, ecx
mov dword [esp + 0x3c], eax
jb 0x409a96
mov eax, dword [esp + 0x30]
push ebx
mov edx, dword [ebp]
push eax
mov eax, dword [ebp + 4]
push 2
mov ecx, eax
shl ecx, 4
add ecx, eax
mov eax, dword [edx + ecx*4 + 0x10]
push eax
call esi
add esp, 0x10
mov ecx, dword [esp + 0x1c]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x3c], eax
jbe 0x409bc8
mov ecx, dword [ebp + 4]
lea eax, [eax + eax*4]
mov edx, ecx
shl edx, 4
add edx, ecx
mov ecx, dword [ebp]
mov ecx, dword [ecx + edx*4 + 4]
fld dword [ecx + eax*4]
fmul dword [0x451910]
lea eax, [ecx + eax*4]
fstp dword [eax]
mov eax, dword [ebp + 4]
mov ecx, dword [ebp]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [ecx + edx*4 + 4]
lea eax, [eax + eax*4]
fld dword [ecx + eax*4 + 4]
fmul dword [0x451910]
lea eax, [ecx + eax*4 + 4]
fstp dword [eax]
mov eax, dword [ebp + 4]
mov ecx, dword [ebp]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [ecx + edx*4 + 4]
lea eax, [eax + eax*4]
fld dword [ecx + eax*4 + 8]
fmul dword [0x451910]
lea eax, [ecx + eax*4 + 8]
fstp dword [eax]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
inc eax
cmp eax, ecx
mov dword [esp + 0x3c], eax
jb 0x409b41
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 0xc]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ebp]
mov dword [eax + edx*4 + 0x14], ecx
mov edx, dword [ebp + 4]
mov ecx, dword [ebp + 0xc]
inc edx
mov dword [ebp + 4], edx
mov eax, edx
mov edx, dword [esp + 0x48]
inc ecx
and edx, 0xff
mov dword [ebp + 0xc], ecx
cmp eax, edx
jae 0x4092c5
push ebx
call dword [sym.imp.MSVCRT.DLL_ftell]
add esp, 4
mov edi, eax
push 0
push edi
push ebx
mov dword [esp + 0x50], edi
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea eax, [esp + 0x2c]
push 4
push eax
call esi
add esp, 0x1c
test eax, eax
je 0x4092c5
cmp dword [esp + 0x18], 0x65746f6e
je 0x409c3c
inc edi
jmp 0x409c0a
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x18], 0
lea edi, [ecx - 3]
mov edx, dword [esp + 0x44]
push 0
push edx
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea eax, [esp + 0x27]
push 1
push eax
call esi
mov al, byte [esp + 0x2f]
add esp, 0x1c
test al, al
jne 0x409cf9
lea ecx, [edi + 1]
push 0
push ecx
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea edx, [esp + 0x27]
push 1
push edx
call esi
mov al, byte [esp + 0x2f]
add esp, 0x1c
test al, al
jne 0x409ca0
mov dword [esp + 0x18], 3
push 0
push edi
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea eax, [esp + 0x27]
push 1
push eax
call esi
mov al, byte [esp + 0x2f]
add esp, 0x1c
test al, al
jne 0x409cc9
mov dword [esp + 0x18], 3
lea ecx, [edi - 1]
push 0
push ecx
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push 1
lea edx, [esp + 0x27]
push 1
push edx
call esi
mov al, byte [esp + 0x2f]
add esp, 0x1c
test al, al
jne 0x409cf5
mov dword [esp + 0x18], 3
inc dword [esp + 0x18]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x18]
dec edx
dec edi
cmp eax, 3
mov dword [esp + 0x44], edx
jb 0x409c4b
mov eax, edx
push 0
push eax
push ebx
call dword [sym.imp.MSVCRT.DLL_fseek]
mov esi, dword [sym.imp.MSVCRT.DLL_fread]
add esp, 0xc
jmp 0x4094d6
push 0
mov eax, 3
mov esi, 1
push 0xc
push ebx
mov dword [esp + 0x80], 0xbf800000
mov dword [esp + 0x84], 0xbf800000
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0x3f800000
mov dword [esp + 0x94], 0x3f800000
mov dword [esp + 0x98], 0xbf800000
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0x3f800000
mov dword [esp + 0xa4], 0x3f800000
mov dword [esp + 0xa8], 0x3f800000
mov dword [esp + 0xac], 0x3f800000
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0x3f800000
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0xbf800000
mov dword [esp + 0xc0], 0x3f800000
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd0], 0xbf800000
mov word [esp + 0x30], 0
mov word [esp + 0x32], ax
mov word [esp + 0x34], si
mov word [esp + 0x36], si
mov word [esp + 0x38], ax
mov word [esp + 0x3a], 2
call dword [sym.imp.MSVCRT.DLL_fseek]
push ebx
push esi
lea ecx, [esp + 0x5c]
push 8
push ecx
call dword [sym.imp.MSVCRT.DLL_fread]
mov edx, dword [ebp + 4]
mov eax, dword [ebp]
push edx
push 0x44
push eax
call fcn.004066b0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
push ecx
push 0x12
push edx
mov dword [ebp], eax
call fcn.004066b0
mov ecx, dword [ebp]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [ebp + 4], esi
mov dword [ebp + 0x18], eax
push 0x50
mov dword [ecx], 4
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov edx, dword [ebp]
push 0x30
mov dword [edx + 4], eax
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp]
push 0xc
mov dword [ecx + 8], eax
mov edx, dword [ebp]
mov dword [edx + 0xc], 6
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp]
lea esi, [esp + 0xb4]
add esp, 0x40
mov dword [ecx + 0x10], eax
mov edx, dword [ebp]
mov ecx, 0x14
mov edi, dword [edx + 4]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp]
mov ecx, dword [eax + 8]
add ecx, 0x24
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc0]
mov dword [ecx], edx
mov edx, dword [esp + 0xc4]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov eax, dword [ebp]
mov eax, dword [eax + 8]
lea ecx, [eax + 0x24]
add eax, 0x18
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 8]
mov dword [eax + 8], ecx
mov edx, dword [ebp]
mov eax, dword [edx + 8]
lea ecx, [eax + 0x18]
add eax, 0xc
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 8]
mov dword [eax + 8], ecx
mov edx, dword [ebp]
mov eax, dword [edx + 8]
lea ecx, [eax + 0xc]
mov edx, dword [eax + 0xc]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 8]
mov dword [eax + 8], ecx
mov edx, dword [ebp]
mov ecx, dword [esp + 0x24]
mov eax, dword [edx + 0x10]
mov edx, dword [esp + 0x28]
mov dword [eax], ecx
mov ecx, dword [esp + 0x2c]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
cmp ecx, eax
jbe 0x40a027
mov dword [esp + 0x24], eax
xor eax, eax
mov dword [esp + 0x28], eax
mov edx, dword [ebp]
fild qword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
mov edx, dword [edx + 4]
fidiv dword [esp + 0x24]
mov dword [esp + 0x28], eax
fmul dword [edx + 4]
fstp dword [edx + 4]
mov edx, dword [esp + 0x48]
mov ecx, dword [ebp]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
fild qword [esp + 0x24]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
mov ecx, dword [ecx + 4]
fidiv dword [esp + 0x24]
mov dword [esp + 0x28], eax
fmul dword [ecx + 0x18]
fstp dword [ecx + 0x18]
mov edx, dword [esp + 0x48]
mov ecx, dword [ebp]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
fild qword [esp + 0x24]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
mov ecx, dword [ecx + 4]
fidiv dword [esp + 0x24]
mov dword [esp + 0x28], eax
fmul dword [ecx + 0x2c]
fstp dword [ecx + 0x2c]
mov edx, dword [esp + 0x48]
mov ecx, dword [ebp]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
fild qword [esp + 0x24]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
mov ecx, dword [ecx + 4]
fidiv dword [esp + 0x24]
fmul dword [ecx + 0x40]
fstp dword [ecx + 0x40]
jmp 0x40a0d5
jae 0x40a0d5
mov dword [esp + 0x24], ecx
xor ecx, ecx
mov dword [esp + 0x28], ecx
mov edx, dword [ebp]
fild qword [esp + 0x24]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov edx, dword [edx + 4]
fidiv dword [esp + 0x24]
mov dword [esp + 0x28], ecx
fmul dword [edx]
fstp dword [edx]
mov edx, dword [esp + 0x4c]
mov eax, dword [ebp]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x48]
fild qword [esp + 0x24]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 4]
fidiv dword [esp + 0x24]
mov dword [esp + 0x28], ecx
fmul dword [eax + 0x14]
fstp dword [eax + 0x14]
mov edx, dword [esp + 0x4c]
mov eax, dword [ebp]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x48]
fild qword [esp + 0x24]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 4]
fidiv dword [esp + 0x24]
mov dword [esp + 0x28], ecx
fmul dword [eax + 0x28]
fstp dword [eax + 0x28]
mov edx, dword [esp + 0x4c]
mov eax, dword [ebp]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x48]
fild qword [esp + 0x24]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 4]
fidiv dword [esp + 0x24]
fmul dword [eax + 0x3c]
fstp dword [eax + 0x3c]
mov esi, dword [esp + 0xe0]
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xfffffffc
push ecx
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 8]
mov edi, esi
push 0xa
mov dword [ecx + 4], eax
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [ebp + 8]
repne scasb al, byte es:[edi]
mov edi, dword [edx + 4]
not ecx
add ecx, 0xfffffffb
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0xe8]
or ecx, 0xffffffff
mov edx, dword [ebp + 8]
repne scasb al, byte es:[edi]
mov eax, dword [edx + 4]
not ecx
dec ecx
mov byte [ecx + eax - 4], 0
call sub.MSVCRT.DLL_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [ebp + 8]
mov edi, str.default
push ebx
mov dword [ecx + 8], eax
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [ebp + 8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [edx + 8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp]
mov dword [ecx + 0x14], 0
mov dword [ebp + 0xc], 1
call dword [sym.imp.MSVCRT.DLL_fclose]
add esp, 0xc
mov eax, dword [ebp + 0x18]
cmp eax, 0x7777
je 0x40a197
cmp eax, 0x4ae0
jne 0x40a4f0
xor edx, edx
mov dword [esp + 0x14], edx
mov eax, dword [ebp + 4]
test eax, eax
jbe 0x40a4f0
mov ecx, edx
shl ecx, 4
add ecx, edx
mov edx, dword [ebp]
shl ecx, 2
mov edx, dword [ecx + edx + 4]
mov eax, edx
mov esi, dword [eax]
mov dword [esp + 0x5c], esi
mov esi, dword [eax + 4]
mov dword [esp + 0x60], esi
mov eax, dword [eax + 8]
mov dword [esp + 0x64], eax
mov eax, edx
mov esi, dword [eax]
mov dword [esp + 0x50], esi
mov esi, dword [eax + 4]
mov dword [esp + 0x54], esi
xor esi, esi
mov eax, dword [eax + 8]
mov dword [esp + 0x18], esi
mov dword [esp + 0x58], eax
mov eax, dword [ebp]
cmp dword [ecx + eax], 0
jbe 0x40a286
fld dword [edx]
fcomp dword [esp + 0x50]
fnstsw ax
test ah, 1
je 0x40a20b
mov eax, dword [edx]
mov dword [esp + 0x50], eax
fld dword [edx + 4]
fcomp dword [esp + 0x54]
fnstsw ax
test ah, 1
je 0x40a220
mov eax, dword [edx + 4]
mov dword [esp + 0x54], eax
fld dword [edx + 8]
fcomp dword [esp + 0x58]
fnstsw ax
test ah, 1
je 0x40a235
mov eax, dword [edx + 8]
mov dword [esp + 0x58], eax
fld dword [edx]
fcomp dword [esp + 0x5c]
fnstsw ax
test ah, 0x41
jne 0x40a248
mov eax, dword [edx]
mov dword [esp + 0x5c], eax
fld dword [edx + 4]
fcomp dword [esp + 0x60]
fnstsw ax
test ah, 0x41
jne 0x40a25d
mov eax, dword [edx + 4]
mov dword [esp + 0x60], eax
fld dword [edx + 8]
fcomp dword [esp + 0x64]
fnstsw ax
test ah, 0x41
jne 0x40a272
mov eax, dword [edx + 8]
mov dword [esp + 0x64], eax
inc esi
add edx, 0x14
mov dword [esp + 0x18], esi
mov eax, dword [ebp]
cmp esi, dword [ecx + eax]
jb 0x40a1f8
fld dword [esp + 0x5c]
fadd dword [esp + 0x50]
mov edx, dword [ebp]
fmul dword [0x451994]
lea eax, [ecx + edx + 0x1c]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
fstp dword [esp + 0x68]
fld dword [esp + 0x60]
fadd dword [esp + 0x54]
mov dword [eax], ecx
mov ecx, dword [esp + 0x58]
fmul dword [0x451994]
mov dword [eax + 4], edx
fstp dword [esp + 0x6c]
fld dword [esp + 0x64]
fadd dword [esp + 0x58]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x14]
mov edx, eax
fmul dword [0x451994]
shl edx, 4
add edx, eax
mov eax, dword [ebp]
fstp dword [esp + 0x70]
fld dword [esp + 0x58]
fsub dword [esp + 0x64]
fld dword [esp + 0x54]
fsub dword [esp + 0x60]
fld dword [esp + 0x50]
fsub dword [esp + 0x5c]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
lea ecx, [eax + edx*4 + 0x28]
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
faddp st(1)
fld st(3)
fmul st(4)
mov dword [ecx], edx
mov edx, dword [esp + 0x64]
faddp st(1)
mov dword [ecx + 4], eax
fsqrt
mov dword [ecx + 8], edx
mov eax, dword [esp + 0x14]
mov edx, dword [ebp]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea eax, [edx + ecx*4 + 0x34]
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [eax], ecx
mov ecx, dword [esp + 0x70]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x14]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ebp]
fmul qword [0x451908]
fstp st(3)
fstp st(0)
fstp st(0)
fstp dword [eax + edx*4 + 0x40]
xor eax, eax
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x14]
mov esi, dword [ebp]
mov ecx, edx
shl ecx, 4
add ecx, edx
lea ecx, [esi + ecx*4]
mov esi, dword [ecx + 0xc]
test esi, esi
jbe 0x40a4e0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov edx, dword [ecx + 0x10]
mov ecx, dword [ecx + 4]
mov si, word [edx + eax*2 + 4]
mov bx, word [edx + eax*2]
mov di, word [edx + eax*2 + 2]
and esi, 0xffff
lea edx, [esp + 0x24]
mov dword [esp + 0x48], ecx
lea eax, [esi + esi*4]
push edx
sub esp, 0xc
and edi, 0xffff
lea ecx, [ecx + eax*4]
mov edx, esp
sub esp, 0xc
and ebx, 0xffff
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
lea edx, [edi + edi*4]
lea ecx, [eax + edx*4]
mov edx, esp
sub esp, 0xc
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
lea edx, [ebx + ebx*4]
lea ecx, [eax + edx*4]
mov edx, esp
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
call fcn.00406600
mov eax, dword [esp + 0x3c]
lea esi, [esi + esi*2]
mov edx, eax
lea edi, [edi + edi*2]
shl edx, 4
add edx, eax
mov eax, dword [ebp]
shl esi, 2
mov ecx, dword [eax + edx*4 + 8]
mov edx, dword [esp + 0x4c]
add ecx, esi
add esp, 0x28
mov dword [ecx], edx
mov eax, dword [esp + 0x28]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x2c]
mov dword [ecx + 8], edx
mov eax, dword [esp + 0x14]
mov edx, dword [ebp]
mov ecx, eax
shl ecx, 4
add ecx, eax
shl edi, 2
mov eax, dword [edx + ecx*4 + 8]
lea ecx, [eax + esi]
lea edx, [edi + eax]
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
mov eax, dword [esp + 0x14]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ebp]
lea ecx, [ebx + ebx*2]
mov eax, dword [eax + edx*4 + 8]
add edi, eax
lea edx, [eax + ecx*4]
mov eax, dword [edi]
mov dword [edx], eax
mov ecx, dword [edi + 4]
mov dword [edx + 4], ecx
mov eax, dword [edi + 8]
mov dword [edx + 8], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, edx
add eax, 3
shl ecx, 4
mov dword [esp + 0x18], eax
mov esi, dword [ebp]
add ecx, edx
lea ecx, [esi + ecx*4]
cmp eax, dword [ecx + 0xc]
jb 0x40a38d
inc edx
mov dword [esp + 0x14], edx
mov eax, dword [ebp + 4]
cmp edx, eax
jb 0x40a1a8
xor edi, edi
xor eax, eax
mov dword [ebp + 0x10], edi
mov dword [ebp + 0x14], edi
mov dword [esp + 0x14], eax
mov ecx, dword [ebp + 4]
cmp ecx, edi
jbe 0x40a541
mov ecx, dword [ebp]
mov ebx, dword [ebp + 0x10]
mov edx, eax
mov esi, dword [ebp + 0x14]
shl edx, 4
add edx, eax
mov eax, dword [ecx + edx*4]
add ebx, eax
mov dword [ebp + 0x10], ebx
mov eax, dword [esp + 0x14]
mov edx, eax
shl edx, 4
add edx, eax
mov eax, dword [ecx + edx*4 + 0xc]
add esi, eax
mov dword [ebp + 0x14], esi
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
mov ecx, dword [ebp + 4]
cmp eax, ecx
jb 0x40a505
mov dword [esp + 0x14], edi
mov eax, dword [ebp + 0xc]
cmp eax, edi
jbe 0x40a672
mov ebx, dword [sym.imp.MSVCRT.DLL_rand]
test edi, edi
je 0x40a5d3
mov dword [esp + 0x30], 0
jbe 0x40a5d3
mov eax, dword [ebp + 8]
lea ecx, [edi + edi*8]
mov edx, dword [eax + ecx*2 + 4]
lea ecx, [eax + ecx*2]
add eax, 4
mov dword [esp + 0x24], ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov esi, dword [eax]
mov eax, dword [esp + 0x48]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40a5ae
test cl, cl
je 0x40a5aa
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40a5ae
add eax, 2
add esi, 2
test cl, cl
jne 0x40a58a
xor eax, eax
jmp 0x40a5b3
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
mov eax, dword [esp + 0x30]
je 0x40a67f
mov edx, dword [esp + 0x40]
inc eax
add edx, 0x12
cmp eax, edi
mov dword [esp + 0x30], eax
mov dword [esp + 0x40], edx
jb 0x40a580
mov edx, dword [ebp + 8]
lea ecx, [edi + edi*8]
mov dword [edx + ecx*2], 0
call ebx
and al, 0x3f
mov cl, 0xc0
sub cl, al
mov eax, dword [esp + 0x14]
lea edx, [eax + eax*8]
mov eax, dword [ebp + 8]
mov byte [eax + edx*2 + 0xc], cl
call ebx
and al, 0x3f
mov cl, 0xc0
sub cl, al
mov eax, dword [esp + 0x14]
lea edx, [eax + eax*8]
mov eax, dword [ebp + 8]
mov byte [eax + edx*2 + 0xd], cl
call ebx
and al, 0x3f
mov cl, 0xc0
sub cl, al
mov eax, dword [esp + 0x14]
lea edx, [eax + eax*8]
mov eax, dword [ebp + 8]
mov byte [eax + edx*2 + 0xe], cl
mov eax, dword [esp + 0x14]
mov edx, dword [ebp + 8]
lea ecx, [eax + eax*8]
lea eax, [edx + ecx*2]
mov cl, byte [edx + ecx*2 + 0xc]
mov byte [eax + 0xf], cl
mov eax, dword [esp + 0x14]
lea edx, [eax + eax*8]
mov eax, dword [ebp + 8]
mov cl, byte [eax + edx*2 + 0xd]
lea eax, [eax + edx*2]
mov byte [eax + 0x10], cl
mov eax, dword [esp + 0x14]
lea edx, [eax + eax*8]
mov eax, dword [ebp + 8]
mov cl, byte [eax + edx*2 + 0xe]
lea eax, [eax + edx*2]
mov byte [eax + 0x11], cl
mov edi, dword [esp + 0x14]
inc edi
mov dword [esp + 0x14], edi
mov eax, dword [ebp + 0xc]
cmp edi, eax
jb 0x40a556
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 0xcc
ret
lea ecx, [eax + eax*8]
mov eax, dword [ebp + 8]
mov edx, dword [eax + ecx*2]
mov eax, dword [esp + 0x24]
mov dword [eax], edx
jmp 0x40a5e0