Function at 0x40a9a0
Capabilities:
Print debug messages
Resolve function by parsing pe exports

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c7813
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x7f0
mov eax, dword [0x4fc00c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x700], esi
mov edi, dword [ebx + 8]
push ecx
mov dword [ebp - 0x708], edi
call fcn.0040f4d0
mov ecx, eax
call fcn.0040f5a0
test al, al
je 0x40c818
push edi
mov ecx, esi
call fcn.0040ffc0
test al, al
je 0x40c818
lea eax, [esi + 0x900]
push edi
push 0
mov ecx, eax
mov dword [ebp - 0x73c], eax
call fcn.0040c900
test al, al
je 0x40c818
lea eax, [esi + 0xa14]
push edi
push ecx
mov ecx, eax
mov dword [ebp - 0x72c], eax
call fcn.00404330
test al, al
je 0x40c818
push 4
push 0x3000
push 0x36b0
lea edi, [esi + 0xa2c]
push 0
mov dword [ebp - 0x728], edi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [edi], eax
test eax, eax
jne 0x40aa93
mov eax, 0x4dcb8c
push eax
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
push 4
push 0x3000
push 0x7d0
mov eax, 0x64
push 0
mov word [edi + 4], ax
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [edi + 0x10], eax
test eax, eax
jne 0x40aad2
mov eax, str.shotcross_alloc_failed
push eax
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
push str.tx_shota
push str.tx_shot
call fcn.0043add0
mov ecx, eax
call fcn.0043b1a0
mov word [edi + 0xc], ax
test ax, ax
jne 0x40ab0c
mov eax, str.tex_load_failed
push eax
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
push str.tx_levelup_uia
add esi, 0xa70
push str.tx_levelup_ui
mov dword [ebp - 0x724], esi
call fcn.0043add0
mov ecx, eax
call fcn.0043b1a0
mov word [esi + 2], ax
test ax, ax
jne 0x40ab51
push str.ui_guide_load_failed
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
movzx esi, word [0x4fe456]
movzx edi, word [0x4fe454]
call fcn.0043add0
push 0
push 0x1c
push ecx
push 1
push esi
push edi
push 1
mov ecx, eax
call fcn.0043b090
mov edi, dword [ebp - 0x724]
mov word [edi], ax
test ax, ax
jne 0x40ab9e
push str.capture_tex_create_failed
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
push dword [ebp - 0x708]
lea ecx, [edi + 8]
sub esp, 8
call fcn.0042c160
test al, al
je 0x40c818
mov esi, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 4
push 0x3000
push 0xca8
push 0
call esi
mov dword [edi + 0x280], eax
test eax, eax
je 0x40c818
mov eax, 0x5a
mov word [edi + 0x284], ax
mov edi, dword [ebp - 0x700]
push 0x4dc2c8
push str.tx_exp_stone
lea eax, [edi + 0xa5c]
mov dword [ebp - 0x75c], eax
call fcn.0043add0
mov ecx, eax
call fcn.0043b1a0
mov word [edi + 0xa5c], ax
test ax, ax
jne 0x40ac36
mov eax, str.tex_load_failed
push eax
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
push 4
push 0x3000
push 0x3c28
push 0
call esi
mov dword [edi + 0xa60], eax
test eax, eax
jne 0x40ac6b
mov eax, str.exp_alloc_failed
push eax
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
mov eax, 0x15e
mov dword [edi + 0xa68], 0xffffffff
mov word [edi + 0xa64], ax
call fcn.00401800
push str.tx_act_effecta
push str.tx_act_effect
mov dword [ebp - 0x720], eax
call fcn.0043add0
mov ecx, eax
call fcn.0043b1a0
mov ecx, dword [ebp - 0x720]
mov word [ecx], ax
test ax, ax
jne 0x40accb
mov eax, str.tex_load_failed
push eax
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
push 4
push 0x3000
push 0x6270
push 0
call esi
mov ecx, dword [ebp - 0x720]
mov dword [ecx + 0xc], eax
test eax, eax
jne 0x40ad03
mov eax, str.effect_alloc_failed
push eax
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
mov eax, 0x12c
mov dword [ecx + 4], 0xffffffff
mov word [ecx + 8], ax
call fcn.0040f4d0
call fcn.0041fac0
mov eax, dword [eax + 0x2c90]
mov dword [ebp - 0x704], eax
call fcn.0040f4d0
call fcn.0041fac0
push dword [ebp - 0x708]
lea esi, [edi + 0xa40]
push 3
mov eax, dword [eax + 0x2c94]
mov ecx, esi
mov dword [ebp - 0x724], eax
mov eax, dword [esi]
mov dword [ebp - 0x718], esi
mov eax, dword [eax]
call eax
test al, al
je 0x40c818
push dword [ebp - 0x708]
mov eax, dword [esi]
mov ecx, esi
push 0
push 0x4dc5f4
push 0
mov eax, dword [eax + 8]
call eax
test al, al
je 0x40c818
push dword [ebp - 0x708]
mov eax, dword [esi]
mov ecx, esi
push 0
push str.mdl_map_danbool.ex2
push 1
mov eax, dword [eax + 8]
call eax
test al, al
je 0x40c818
push dword [ebp - 0x708]
mov eax, dword [esi]
mov ecx, esi
push 0
push str.mdl_map_parasol2.ex2
push 2
mov eax, dword [eax + 8]
call eax
test al, al
je 0x40c818
mov eax, dword [ebp - 0x724]
lea ecx, [edi + 0xa40]
add al, 5
mov byte [esi + 0x1a], 1
mov byte [esi + 0x18], al
mov eax, dword [ebp - 0x704]
add al, 4
mov byte [esi + 0x19], al
xor al, al
mov byte [ebp - 0x6f9], al
nop dword [eax + eax]
movzx esi, al
push 4
push 0x3000
movzx eax, byte [esi + ecx + 0x18]
imul eax, eax, 0x5c
push eax
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [edi + esi*4 + 0xa4c], eax
lea ecx, [edi + 0xa40]
test eax, eax
je 0x40c804
mov al, byte [ebp - 0x6f9]
inc al
mov byte [ebp - 0x6f9], al
cmp al, 3
jb 0x40adf0
mov al, byte [ecx + 0x19]
mov byte [ebp - 0x6fa], al
mov al, byte [ecx + 0x18]
push 0x200
mov byte [ebp - 0x6f9], al
lea eax, [ebp - 0x5d8]
push 0
push eax
call fcn.0047ebc0
movzx eax, byte [ebp - 0x6fa]
push eax
movzx eax, byte [ebp - 0x6f9]
push eax
lea eax, [ebp - 0x5d8]
push str._____Parasols:_d___Danbools:_d______n
push eax
call fcn.0044d1b0
add esp, 0x1c
lea eax, [ebp - 0x5d8]
push eax
mov eax, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov dword [ebp - 0x774], eax
call eax
lea eax, [edi + 0x900]
mov dword [ebp - 0x768], 0
push eax
lea eax, [ebp - 0x768]
mov dword [ebp - 0x764], 0
push eax
lea ecx, [edi + 0xa40]
mov dword [ebp - 0x760], 0
call fcn.00408540
push str.tx_act_uia
push str.tx_act_ui
call fcn.0043add0
mov ecx, eax
call fcn.0043b1a0
mov word [edi + 0xf08], ax
test ax, ax
jne 0x40af02
push str.tex_ui_load_failed_n
push 0x200
push dword [ebp - 0x708]
call fcn.00483128
jmp 0x40c815
xor eax, eax
mov dword [ebp - 0x740], 1
mov dword [ebp - 0x734], eax
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x784], eax
movzx eax, word [0x4fe454]
mov word [ebp - 0x780], ax
movzx eax, word [0x4fe456]
mov word [ebp - 0x77e], ax
xor al, al
mov dword [ebp - 0x77c], 0
mov dword [ebp - 0x778], 0x3f800000
mov byte [ebp - 0x6f9], 0
mov byte [ebp - 0x730], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 1
mov dword [ebp - 0x60], 0
mov byte [ebp - 0x738], al
mov dword [ebp - 0x758], 0
call fcn.00408dc0
call fcn.004201e0
movss xmm3, dword [0x4f3cd0]
movss xmm2, dword [0x4f3d50]
movss xmm1, dword [0x4f3c68]
lea esi, [eax + 0xb0]
mov dword [esi], 0x3eb2b8c0
push ecx
lea ecx, [ebp - 0x7fc]
mov dword [esi + 4], 0x3fe38e39
mov dword [esi + 8], 0x3f800000
mov dword [esi + 0xc], 0x42c80000
mov dword [esi + 0x10], 0x3c23d70a
mov dword [esp], 0x42c80000
call fcn.0044e0f0
movss xmm1, dword [0x4f3ef0]
lea ecx, [ebp - 0x58]
add esp, 4
movups xmm0, xmmword [eax]
movups xmmword [esi + 0x14], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esi + 0x24], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esi + 0x34], xmm0
movups xmm0, xmmword [eax + 0x30]
xor eax, eax
movups xmmword [esi + 0x44], xmm0
mov word [ebp - 0x54], ax
xorps xmm0, xmm0
movups xmmword [ebp - 0x50], xmm0
movups xmmword [ebp - 0x40], xmm0
call fcn.0044d160
call fcn.0041c1a0
cmp byte [eax + 0xe], 0
je 0x40b038
mov byte [eax + 0xe], 0
mov dword [eax + 0x14], 0x3caaaaab
call fcn.0041c1a0
mov dword [ebp - 0x750], 0
mov dword [eax + 8], 3
mov eax, 1
mov dword [ebp - 0x71c], eax
mov dword [ebp - 0x754], eax
mov eax, 0x28
mov word [ebp - 0x74c], ax
call fcn.0041fac0
mov edx, dword [eax + 0x2034]
inc edx
mov ecx, edx
mov dword [eax + 0x2034], edx
xor ecx, 0xc0
xor edx, 0x5e
mov dword [eax + 0x34], ecx
xor ecx, ecx
mov dword [eax + 0x4034], edx
call fcn.00424c00
mov ecx, 1
call fcn.00424c00
mov ecx, 2
call fcn.00424c00
call fcn.00420dc0
cmp byte [eax + 0x62], 0
mov eax, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov dword [ebp - 0x724], eax
jne 0x40c544
movsd xmm0, qword [0x4f3d58]
mov eax, dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [ebp - 0x744], eax
movsd qword [ebp - 0x7b0], xmm0
call fcn.00423ed0
lea ecx, [eax + 8]
call fcn.00445df0
call fcn.00420dc0
mov esi, eax
mov al, byte [esi + 0x61]
test al, 0xf0
je 0x40b12c
movzx ecx, al
and ecx, 0xf
push ecx
mov ecx, 0x4fe450
call fcn.00440a60
movzx eax, word [0x4fe456]
push ecx
push eax
movzx eax, word [0x4fe454]
mov ecx, 0x4fe450
push eax
call fcn.004407c0
mov byte [esi + 0x61], 0
cmp byte [esi + 0x60], 0
je 0x40c4fc
call fcn.0041c1a0
mov ecx, eax
call fcn.0041c290
call fcn.0042dc50
mov esi, eax
xor edx, edx
cmp byte [esi + 0x474], dl
jbe 0x40b185
xor ecx, ecx
nop word [eax + eax]
mov eax, dword [esi + 0x470]
lea ecx, [ecx + 0x260]
xor edi, edi
inc edx
mov word [eax + ecx - 0xc], di
movzx eax, byte [esi + 0x474]
cmp edx, eax
jl 0x40b160
mov edi, dword [ebp - 0x700]
mov ecx, dword [ebp - 0x734]
test ecx, ecx
je 0x40b2a8
mov esi, dword [ebp - 0x700]
cmp ecx, 2
push dword [ebp - 0x708]
movzx eax, word [esi + 0xf08]
push eax
lea eax, [ebp - 0x770]
push eax
sete al
movzx eax, al
push eax
lea eax, [esi + 0xa70]
mov ecx, eax
call fcn.00407e60
test al, al
je 0x40c530
cmp al, 1
je 0x40c530
mov eax, dword [ebp - 0x770]
test al, al
jne 0x40b282
call fcn.0040f4d0
mov esi, eax
mov eax, 1
mov edx, dword [esi + 0xc]
movss xmm1, dword [esi + 0x10]
cvtps2pd xmm1, xmm1
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm0
cvttsd2si ecx, xmm1
cmp ecx, 1
cmovl ecx, eax
mov eax, dword [esi + 8]
add eax, ecx
cmp eax, edx
cmovl edx, eax
mov dword [esi + 8], edx
call fcn.0040f4d0
inc dword [eax + 0x68]
call fcn.0041fac0
inc dword [eax + 0x255c]
mov edx, dword [eax + 0x255c]
mov ecx, edx
xor ecx, 0x2d
xor edx, 0x25
mov dword [eax + 0x55c], ecx
mov dword [eax + 0x455c], edx
call fcn.0041fac0
mov byte [ebp - 0x6f9], 1
mov byte [ebp - 0x730], 0
inc dword [eax + 0x21c0]
mov edx, dword [eax + 0x21c0]
mov ecx, edx
xor ecx, 0x76
xor edx, 0xca
mov dword [eax + 0x1c0], ecx
mov dword [eax + 0x41c0], edx
jmp 0x40b28f
push eax
call fcn.0040f4d0
mov ecx, eax
call fcn.0040f7e0
call fcn.0040f4d0
mov edi, dword [ebp - 0x700]
mov ecx, dword [eax + 0x4c]
mov dword [eax + 0x50], ecx
xor eax, eax
mov dword [ebp - 0x734], eax
cmp byte [ebp - 0x6f9], 0
je 0x40b319
xor eax, eax
mov dword [ebp - 0x28], eax
mov word [ebp - 0x24], ax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov byte [ebp - 0x18], al
mov esi, dword [ebp - 0x708]
lea ecx, [ebp - 0x28]
push esi
push dword [ebp - 0x730]
mov dword [ebp - 4], eax
call fcn.00405580
test al, al
jne 0x40b2e6
push esi
call dword [ebp - 0x774]
mov byte [ebp - 0x6f9], 0
mov dword [ebp - 4], 1
push dword [ebp - 0x28]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
push dword [ebp - 0x26]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
mov dword [ebp - 4], 0xffffffff
cmp byte [ebp - 0x738], 0
je 0x40b381
cmp dword [ebp - 0x71c], 0
jne 0x40b38a
mov ecx, dword [ebp - 0x758]
mov ax, cx
inc ecx
mov dword [ebp - 0x758], ecx
cmp ax, 0x78
jle 0x40b395
mov eax, dword [ebp - 0x740]
cmp eax, 1
je 0x40c544
cmp eax, 2
jne 0x40c53a
call fcn.0041fac0
mov edx, dword [eax + 0x203c]
inc edx
mov ecx, edx
mov dword [eax + 0x203c], edx
xor ecx, 0x68
xor edx, 0x10
mov dword [eax + 0x3c], ecx
mov dword [eax + 0x403c], edx
jmp 0x40c56a
cmp dword [ebp - 0x71c], 0
je 0x40b395
call fcn.0040f4d0
cmp dword [eax + 8], 0
jg 0x40b412
call fcn.0041e7c0
mov esi, eax
mov al, byte [esi + 0x44]
mov byte [ebp - 0x6fa], al
call fcn.00443960
movzx ecx, byte [ebp - 0x6fa]
imul ecx, ecx, 0x208
cmp byte [ecx + eax + 0x144], 0
je 0x40b3fe
mov al, byte [ecx + eax + 0x250]
test al, al
je 0x40b3fe
mov al, byte [esi + 0x44]
mov byte [ebp - 0x6fa], al
call fcn.00443960
movzx ecx, byte [ebp - 0x6fa]
imul ecx, ecx, 0x208
push 6
add ecx, 0x13c
add ecx, eax
call fcn.00447bd0
test eax, eax
jne 0x40c49d
push 0x1b
call dword [ebp - 0x724]
cwde
test eax, 0x10000
jne 0x40c49d
call fcn.0041e7c0
mov ecx, eax
call fcn.0041e0b0
movzx esi, ax
call dword [ebp - 0x744]
movsd xmm0, qword [ebp - 0x40]
addsd xmm0, qword [ebp - 0x48]
movsd xmm1, qword [ebp - 0x7b0]
mov dword [ebp - 0x58], eax
xor eax, eax
comisd xmm0, xmm1
movsd qword [ebp - 0x48], xmm0
jb 0x40b457
subsd xmm0, xmm1
mov eax, 1
movsd qword [ebp - 0x48], xmm0
movd xmm0, eax
mov ecx, edi
cvtdq2pd xmm0, xmm0
lea eax, [edi + 0xa2c]
push eax
lea eax, [edi + 0x900]
push dword [ebp - 0x72c]
addsd xmm0, qword [ebp - 0x38]
push eax
push esi
movsd qword [ebp - 0x50], xmm0
call fcn.00410240
call fcn.0040f4d0
lea ecx, [edi + 0x830]
mov dword [ebp - 0x714], ecx
movss xmm0, dword [eax + 0x5c]
movss dword [ebp - 0x704], xmm0
movss xmm0, dword [ecx]
movss dword [ebp - 0x710], xmm0
movss xmm0, dword [eax + 0x60]
addss xmm0, dword [ecx + 4]
movss dword [ebp - 0x748], xmm0
movss xmm0, dword [eax + 0x64]
addss xmm0, dword [ecx + 8]
movss dword [ebp - 0x70c], xmm0
call fcn.004201e0
movss xmm0, dword [ebp - 0x704]
addss xmm0, dword [ebp - 0x710]
lea edi, [eax + 0x44]
mov eax, dword [ebp - 0x714]
lea esi, [edi + 0xc]
movss dword [edi], xmm0
movss xmm0, dword [ebp - 0x748]
movss dword [edi + 4], xmm0
movss xmm0, dword [ebp - 0x70c]
movss dword [edi + 8], xmm0
movq xmm0, qword [eax]
movq qword [esi], xmm0
mov eax, dword [eax + 8]
mov dword [esi + 8], eax
movss xmm2, dword [esi]
movss xmm1, dword [esi + 4]
subss xmm1, dword [edi + 4]
movss xmm0, dword [esi + 8]
subss xmm0, dword [edi + 8]
subss xmm2, dword [edi]
movss dword [ebp - 0x7b4], xmm0
mov eax, dword [ebp - 0x7b4]
unpcklps xmm2, xmm1
movq qword [edi + 0x18], xmm2
mov dword [edi + 0x20], eax
movss xmm1, dword [edi + 0x18]
movss xmm0, dword [edi + 0x1c]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [edi + 0x20]
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x40b58a
sqrtsd xmm0, xmm0
jmp 0x40b58f
call fcn.004c5db0
movss xmm1, dword [0x4f3cd0]
cvtsd2ss xmm0, xmm0
divss xmm1, xmm0
movaps xmm0, xmm1
mulss xmm0, dword [edi + 0x18]
movss dword [edi + 0x18], xmm0
movaps xmm0, xmm1
mulss xmm0, dword [edi + 0x1c]
mulss xmm1, dword [edi + 0x20]
movss dword [edi + 0x1c], xmm0
movss dword [edi + 0x20], xmm1
movss xmm0, dword [esi + 4]
subss xmm0, dword [edi + 4]
movss xmm1, dword [esi]
subss xmm1, dword [edi]
movss dword [ebp - 0x70c], xmm0
movss xmm0, dword [esi + 8]
subss xmm0, dword [edi + 8]
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm0, xmm1
call fcn.004011d0
movaps xmm1, xmm0
movss xmm0, dword [ebp - 0x70c]
call fcn.00401cc0
movss xmm1, dword [edi + 8]
subss xmm1, dword [esi + 8]
movss dword [ebp - 0x70c], xmm0
movss xmm0, dword [edi]
subss xmm0, dword [esi]
call fcn.00401cc0
movss xmm1, dword [ebp - 0x70c]
lea eax, [ebp - 0x790]
push eax
push esi
mov edx, edi
movss dword [edi + 0x24], xmm1
lea ecx, [ebp - 0x7fc]
movss dword [edi + 0x28], xmm0
mov dword [ebp - 0x790], 0
mov dword [ebp - 0x78c], 0x3f800000
mov dword [ebp - 0x788], 0
call fcn.0044dde0
add esp, 8
movups xmm0, xmmword [eax]
movups xmmword [edi + 0x2c], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [edi + 0x3c], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [edi + 0x4c], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [edi + 0x5c], xmm0
call fcn.004201e0
add eax, 0xc4
push eax
call fcn.004201e0
add eax, 0x70
lea ecx, [ebp - 0x6f8]
push eax
lea eax, [ebp - 0x784]
push eax
call fcn.0043d690
push dword [ebp - 0x714]
mov ecx, dword [ebp - 0x73c]
lea eax, [ebp - 0x6f8]
push eax
call fcn.0040d500
call fcn.0040f4d0
mov edi, dword [ebp - 0x72c]
cmp dword [eax + 8], 0
mov esi, dword [edi + 0x14]
setle byte [ebp - 0x76c]
test esi, esi
js 0x40b756
imul eax, esi, 0x1c8
mov dword [ebp - 0x710], eax
nop word [eax + eax]
push dword [ebp - 0x76c]
lea ecx, [ebp - 0x6f8]
push dword [ebp - 0x714]
push dword [ebp - 0x718]
push dword [ebp - 0x75c]
push dword [ebp - 0x73c]
push ecx
mov ecx, dword [edi + 0xc]
push edi
push edi
add ecx, eax
call fcn.004030c0
test al, al
jne 0x40b740
mov eax, dword [edi + 0x14]
cmp esi, eax
jne 0x40b740
dec eax
mov dword [edi + 0x14], eax
mov eax, dword [ebp - 0x710]
sub eax, 0x1c8
sub esi, 1
mov dword [ebp - 0x710], eax
jns 0x40b700
mov ecx, dword [ebp - 0x728]
mov esi, dword [ecx + 8]
test esi, esi
js 0x40b7c0
mov edx, dword [ebp - 0x700]
add edx, 0x85c
imul eax, esi, 0x8c
mov dword [ebp - 0x70c], edx
mov dword [ebp - 0x710], eax
mov ecx, dword [ecx]
push edx
sub esp, 8
add ecx, eax
push edi
call fcn.00414120
mov ecx, dword [ebp - 0x728]
test al, al
jne 0x40b7a4
mov eax, dword [ecx + 8]
cmp esi, eax
jne 0x40b7a4
dec eax
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x710]
mov edx, dword [ebp - 0x70c]
sub eax, 0x8c
sub esi, 1
mov dword [ebp - 0x710], eax
jns 0x40b781
call fcn.0040f4d0
mov dword [ebp - 0x710], 0
movss xmm0, dword [eax + 0x58]
mov eax, dword [ebp - 0x700]
movss dword [ebp - 0x70c], xmm0
mov esi, dword [eax + 0xa68]
test esi, esi
js 0x40b8ab
mov edi, dword [ebp - 0x700]
imul eax, esi, 0x2c
mov dword [ebp - 0x704], eax
nop
lea ecx, [ebp - 0x710]
movaps xmm3, xmm0
push ecx
lea ecx, [edi + 0x830]
push ecx
push ecx
mov ecx, dword [edi + 0xa60]
add ecx, eax
call fcn.00401910
test al, al
jne 0x40b834
mov eax, dword [edi + 0xa68]
cmp esi, eax
jne 0x40b834
dec eax
mov dword [edi + 0xa68], eax
mov eax, dword [ebp - 0x704]
movss xmm0, dword [ebp - 0x70c]
sub eax, 0x2c
sub esi, 1
mov dword [ebp - 0x704], eax
jns 0x40b800
cmp dword [ebp - 0x710], 0
mov edi, dword [ebp - 0x72c]
je 0x40b8ab
call fcn.00423ed0
mov esi, eax
push 0
sub esp, 8
mov ecx, dword [esi]
add ecx, 0xd8
mov dword [ebp - 0x704], ecx
mov al, byte [ecx]
mov ecx, dword [ecx + 4]
movzx edx, al
inc al
movzx ecx, word [ecx + edx*2]
mov edx, dword [ebp - 0x704]
push ecx
lea ecx, [esi + 0xdc]
mov byte [edx], al
call fcn.00446390
mov ecx, dword [ebp - 0x704]
mov al, byte [ecx]
cmp al, byte [ecx + 1]
jb 0x40b8ab
mov byte [ecx], 0
mov esi, dword [ebp - 0x700]
mov ecx, esi
push edi
push dword [ebp - 0x728]
call fcn.00411180
push dword [ebp - 0x738]
lea eax, [esi + 0x830]
push eax
lea eax, [esi + 0x900]
push eax
lea ecx, [esi + 0xa40]
call fcn.00408a50
cmp eax, 1
jne 0x40b9a7
call fcn.0040f4d0
mov esi, eax
mov eax, 1
mov edx, dword [esi + 0xc]
movss xmm1, dword [esi + 0x10]
cvtps2pd xmm1, xmm1
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm0
cvttsd2si ecx, xmm1
cmp ecx, 1
cmovl ecx, eax
mov eax, dword [esi + 8]
add eax, ecx
cmp eax, edx
cmovl edx, eax
mov dword [esi + 8], edx
call fcn.0040f4d0
inc dword [eax + 0x68]
call fcn.0041fac0
inc dword [eax + 0x255c]
mov edx, dword [eax + 0x255c]
mov ecx, edx
xor ecx, 0x2d
xor edx, 0x25
mov dword [eax + 0x55c], ecx
mov dword [eax + 0x455c], edx
call fcn.0041fac0
inc dword [eax + 0x21c0]
mov edx, dword [eax + 0x21c0]
mov ecx, edx
xor ecx, 0x76
xor edx, 0xca
mov dword [eax + 0x1c0], ecx
mov ecx, 0xc
mov dword [eax + 0x41c0], edx
call fcn.00424c00
mov ecx, 0xd
call fcn.00424c00
mov ecx, 0xe
call fcn.00424c00
mov byte [ebp - 0x6f9], 1
mov byte [ebp - 0x730], 0
jmp 0x40c4f6
cmp eax, 2
jne 0x40ba08
call fcn.0040f4d0
inc dword [eax + 0x6c]
call fcn.0041fac0
mov dword [ebp - 0x734], 2
inc dword [eax + 0x21c4]
mov edx, dword [eax + 0x21c4]
mov ecx, edx
xor ecx, 0x34
xor edx, 0x5a
mov dword [eax + 0x1c4], ecx
mov ecx, 0xf
mov dword [eax + 0x41c4], edx
call fcn.00424c00
mov ecx, 0x10
call fcn.00424c00
mov ecx, 0x11
call fcn.00424c00
mov edi, esi
jmp 0x40c4fc
cmp eax, 3
jne 0x40ba22
mov byte [ebp - 0x6f9], 1
mov edi, esi
mov byte [ebp - 0x730], 1
jmp 0x40c4fc
cmp byte [ebp - 0x738], 0
jne 0x40bbab
call fcn.0040f4d0
cmp dword [eax + 8], 0
jg 0x40ba72
cmp dword [ebp - 0x71c], 0
jne 0x40ba63
mov eax, 0x5a
mov dword [ebp - 0x754], 7
mov dword [ebp - 0x750], 0
mov word [ebp - 0x74c], ax
mov dword [ebp - 0x740], 2
jmp 0x40bb90
cmp dword [ebp - 0x71c], 0
jne 0x40bbab
call fcn.0040f4d0
inc dword [eax]
call fcn.0040f4d0
movss xmm3, dword [0x4f3cd0]
mov edx, eax
mov byte [ebp - 0x6fa], 0
mov ecx, dword [edx + 0x44]
add ecx, dword [ebp - 0x710]
mov eax, dword [edx + 0x48]
mov dword [edx + 0x44], ecx
cmp ecx, eax
jl 0x40badd
inc dword [edx + 0x40]
sub ecx, eax
mov eax, dword [edx + 0x40]
movaps xmm1, xmm3
inc eax
mov byte [ebp - 0x6fa], 1
mov dword [edx + 0x44], ecx
movaps xmm2, xmm3
mov dword [edx + 0x48], eax
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [edx + 0x3c], xmm1
jmp 0x40bae7
movss xmm1, dword [edx + 0x3c]
movss xmm2, dword [edx + 0x50]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm3, xmm0
ja 0x40bafa
movaps xmm0, xmm3
cmp byte [ebp - 0x6fa], 0
maxss xmm2, xmm0
movss dword [edx + 0x4c], xmm0
movss dword [edx + 0x50], xmm2
je 0x40bb23
mov dword [ebp - 0x734], 1
call fcn.0040f4d0
inc dword [eax + 0x78]
lea eax, [esi + 0x830]
push eax
push edi
lea ecx, [ebp - 0x68]
call fcn.00408e50
test al, al
je 0x40bbab
mov ecx, dword [esi + 0xa28]
test ecx, ecx
js 0x40bb69
imul edx, ecx, 0x1c8
nop word [eax + eax]
sub ecx, 1
mov eax, dword [esi + 0xa20]
lea edx, [edx - 0x1c8]
mov byte [edx + eax + 0x1c8], 0
jns 0x40bb50
xor eax, eax
mov dword [ebp - 0x754], 4
mov dword [ebp - 0x750], 0
mov word [ebp - 0x74c], ax
mov dword [ebp - 0x740], 1
call fcn.00423ed0
push 0
push 4
push 0
lea ecx, [eax + 8]
call fcn.004457a0
mov al, 1
mov byte [ebp - 0x738], al
call fcn.00401800
mov edi, eax
lea ecx, [edi + 0x10]
mov byte [ecx], 0
mov esi, dword [edi + 4]
test esi, esi
js 0x40bc0b
imul eax, esi, 0x54
mov dword [ebp - 0x704], eax
nop dword [eax + eax]
push 0xa
push 9
push dword [ebp - 0x714]
push ecx
mov ecx, dword [edi + 0xc]
add ecx, eax
call fcn.00401200
test al, al
jne 0x40bbf4
mov eax, dword [edi + 4]
cmp esi, eax
jne 0x40bbf4
dec eax
mov dword [edi + 4], eax
mov eax, dword [ebp - 0x704]
lea ecx, [edi + 0x10]
sub eax, 0x54
sub esi, 1
mov dword [ebp - 0x704], eax
jns 0x40bbd0
push ecx
lea ecx, [ebp - 0x754]
call fcn.004098f0
call fcn.00420dc0
mov al, byte [eax + 0xc]
test al, al
je 0x40bc75
mov ax, word [ebp - 0x54]
test ax, ax
je 0x40bc75
mov esi, dword [ebp - 0x744]
mov ecx, 0xffff
add ax, cx
mov word [ebp - 0x54], ax
nop
call esi
sub eax, dword [ebp - 0x58]
movsd xmm0, qword [ebp - 0x50]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x4f44f0]
comisd xmm0, xmm1
ja 0x40bc40
mov eax, dword [ebp - 0x754]
mov dword [ebp - 0x71c], eax
jmp 0x40c4f6
call fcn.004201e0
movss xmm0, dword [eax + 0xc0]
movss dword [ebp - 0x748], xmm0
call fcn.004201e0
add eax, 0x44
mov dword [ebp - 0x70c], eax
call fcn.004201e0
mov edi, eax
call fcn.004201e0
mov esi, eax
call fcn.004307e0
movups xmm0, xmmword [esi + 0x70]
mov ecx, eax
mov eax, dword [ebp - 0x70c]
mov dword [ebp - 0x704], ecx
movups xmmword [ecx + 0x310], xmm0
movups xmm0, xmmword [esi + 0x80]
movups xmmword [ecx + 0x320], xmm0
movups xmm0, xmmword [esi + 0x90]
movups xmmword [ecx + 0x330], xmm0
movups xmm0, xmmword [esi + 0xa0]
movups xmmword [ecx + 0x340], xmm0
movups xmm0, xmmword [edi + 0xc4]
movups xmmword [ecx + 0x350], xmm0
movups xmm0, xmmword [edi + 0xd4]
movups xmmword [ecx + 0x360], xmm0
movups xmm0, xmmword [edi + 0xe4]
movups xmmword [ecx + 0x370], xmm0
movups xmm0, xmmword [edi + 0xf4]
movups xmmword [ecx + 0x380], xmm0
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [ebp - 0x768], xmm0
movss xmm0, dword [ebp - 0x768]
movss dword [ecx + 0x2e0], xmm0
movss xmm0, dword [ebp - 0x764]
movss dword [ecx + 0x2e4], xmm0
mov dword [ebp - 0x760], eax
movss xmm0, dword [ebp - 0x760]
movss dword [ecx + 0x2e8], xmm0
movss xmm0, dword [ebp - 0x748]
movss dword [ecx + 0x2ec], xmm0
mov eax, dword [ecx + 0x178]
test eax, eax
je 0x40be09
lea esi, [ecx + 0x184]
cmp eax, 1
jne 0x40bdbc
mov eax, dword [esi]
test eax, eax
je 0x40be09
movups xmm0, xmmword [ecx + 0x2e0]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ecx + 0x2f0]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x300]
movups xmmword [eax + 0x20], xmm0
jmp 0x40be09
mov eax, dword [ecx + 0x17c]
push esi
push 0
push 0
mov ecx, dword [eax]
push eax
call dword [ecx + 0x20]
test eax, eax
jne 0x40be09
mov ecx, dword [ebp - 0x704]
mov eax, dword [esi]
push 0
push 0
movups xmm0, xmmword [ecx + 0x2e0]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ecx + 0x2f0]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x300]
movups xmmword [eax + 0x20], xmm0
mov eax, dword [ecx + 0x17c]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
call fcn.004201e0
push ecx
movss xmm0, dword [eax + 0xc0]
movss dword [esp], xmm0
call fcn.004201e0
add eax, 0x44
push eax
call fcn.004201e0
add eax, 0xc4
push eax
call fcn.004201e0
add eax, 0x70
push eax
call fcn.0042f320
mov ecx, eax
call fcn.00430690
call fcn.004201e0
mov edi, eax
call fcn.004201e0
mov esi, eax
call fcn.004317e0
movups xmm0, xmmword [esi + 0x70]
movups xmmword [eax + 0x2e0], xmm0
movups xmm0, xmmword [esi + 0x80]
movups xmmword [eax + 0x2f0], xmm0
movups xmm0, xmmword [esi + 0x90]
movups xmmword [eax + 0x300], xmm0
movups xmm0, xmmword [esi + 0xa0]
movups xmmword [eax + 0x310], xmm0
movups xmm0, xmmword [edi + 0xc4]
movups xmmword [eax + 0x320], xmm0
movups xmm0, xmmword [edi + 0xd4]
movups xmmword [eax + 0x330], xmm0
movups xmm0, xmmword [edi + 0xe4]
movups xmmword [eax + 0x340], xmm0
movups xmm0, xmmword [edi + 0xf4]
movups xmmword [eax + 0x350], xmm0
call fcn.004201e0
mov edi, eax
call fcn.004201e0
mov esi, eax
call fcn.0042c7a0
movups xmm0, xmmword [esi + 0x70]
mov ecx, eax
mov dword [ebp - 0x70c], ecx
movups xmmword [ecx + 0x2f0], xmm0
mov eax, dword [ecx + 0x370]
movups xmm0, xmmword [esi + 0x80]
movups xmmword [ecx + 0x300], xmm0
movups xmm0, xmmword [esi + 0x90]
movups xmmword [ecx + 0x310], xmm0
movups xmm0, xmmword [esi + 0xa0]
movups xmmword [ecx + 0x320], xmm0
movups xmm0, xmmword [edi + 0xc4]
movups xmmword [ecx + 0x330], xmm0
movups xmm0, xmmword [edi + 0xd4]
movups xmmword [ecx + 0x340], xmm0
movups xmm0, xmmword [edi + 0xe4]
movups xmmword [ecx + 0x350], xmm0
movups xmm0, xmmword [edi + 0xf4]
movups xmmword [ecx + 0x360], xmm0
movups xmm0, xmmword [eax + 0x28]
movups xmmword [ecx + 0x2e0], xmm0
mov eax, dword [ecx + 0x148]
test eax, eax
je 0x40bfbc
lea esi, [ecx + 0x154]
cmp eax, 1
jne 0x40bf85
mov eax, dword [esi]
test eax, eax
je 0x40bfbc
movups xmm0, xmmword [ecx + 0x2e0]
movups xmmword [eax], xmm0
jmp 0x40bfbc
mov eax, dword [ecx + 0x14c]
push esi
push 0
push 0
mov ecx, dword [eax]
push eax
call dword [ecx + 0x20]
test eax, eax
jne 0x40bfbc
mov ecx, dword [ebp - 0x70c]
mov eax, dword [esi]
push 0
push 0
movups xmm0, xmmword [ecx + 0x2e0]
movups xmmword [eax], xmm0
mov eax, dword [ecx + 0x14c]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
sub esp, 8
push 0x4fe4d0
call fcn.004204f0
mov ecx, eax
call fcn.00420a90
call fcn.004204f0
lea edx, [ebp - 0x5c]
push edx
mov eax, dword [eax + 0x94]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
mov eax, dword [0x4fe4d8]
push 0
push 0
push 0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push 3
push dword [ebp - 0x5c]
push eax
call dword [ecx + 0xbc]
mov esi, dword [0x4fe4d8]
call fcn.004201e0
mov edi, dword [ebp - 0x73c]
add eax, 0x70
push eax
push esi
mov ecx, edi
call fcn.0040dfb0
call fcn.004201e0
add eax, 0x70
lea ecx, [edi + 0xc]
push eax
push esi
call fcn.0040e310
push ecx
push dword [0x4fe4d8]
mov ecx, dword [ebp - 0x75c]
call fcn.00401c70
mov esi, dword [0x4fe4d8]
call fcn.004201e0
mov ecx, dword [ebp - 0x718]
add eax, 0x70
push eax
push esi
call fcn.004049e0
push ecx
push dword [0x4fe4d8]
mov ecx, dword [ebp - 0x700]
call fcn.00410dd0
mov edi, dword [ebp - 0x72c]
mov eax, dword [0x4fe4d8]
mov dword [ebp - 0x70c], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x704], eax
test eax, eax
js 0x40c214
imul eax, eax, 0x1c8
mov dword [ebp - 0x714], eax
mov esi, dword [edi + 0xc]
add esi, eax
cmp byte [esi], 0
je 0x40c1f4
cmp byte [esi + 0x170], 0
je 0x40c1f4
lea ecx, [ebp - 0x488]
call fcn.00401e70
movss xmm1, dword [esi + 0x4c]
xorps xmm3, xmm3
movss xmm0, dword [esi + 0x3c]
mulss xmm0, xmm3
movzx eax, byte [esi + 6]
mulss xmm1, xmm3
movss xmm2, dword [esi + 0x1a8]
movss dword [ebp - 0x3e0], xmm2
addss xmm1, xmm0
movss xmm0, dword [esi + 0x5c]
mulss xmm0, xmm3
addss xmm1, xmm0
movss xmm0, dword [esi + 0x40]
mulss xmm0, xmm3
addss xmm1, dword [esi + 0x6c]
movss dword [ebp - 0x488], xmm1
movss xmm1, dword [esi + 0x50]
mulss xmm1, xmm3
addss xmm1, xmm0
movss xmm0, dword [esi + 0x60]
mulss xmm0, xmm3
addss xmm1, xmm0
movss xmm0, dword [esi + 0x44]
mulss xmm0, xmm3
addss xmm1, dword [esi + 0x70]
movss dword [ebp - 0x484], xmm1
movss xmm1, dword [esi + 0x54]
mulss xmm1, xmm3
addss xmm1, xmm0
movss xmm0, dword [esi + 0x64]
mulss xmm0, xmm3
addss xmm1, xmm0
movups xmm0, xmmword [esi + 0x3c]
movups xmmword [ebp - 0x470], xmm0
movups xmm0, xmmword [esi + 0x4c]
addss xmm1, dword [esi + 0x74]
movups xmmword [ebp - 0x460], xmm0
movups xmm0, xmmword [esi + 0x5c]
movss dword [ebp - 0x480], xmm1
movups xmmword [ebp - 0x450], xmm0
movups xmm0, xmmword [esi + 0x6c]
movups xmmword [ebp - 0x440], xmm0
movups xmm0, xmmword [esi + 0x84]
movups xmmword [ebp - 0x3f0], xmm0
cmp ax, word [edi + 4]
jae 0x40c1ee
imul edx, eax, 0x328
add edx, dword [edi + 8]
movzx eax, word [edx + 0x31e]
cmp ax, word [edx + 0x31c]
jae 0x40c1ee
imul edi, eax, 0xac
lea esi, [ebp - 0x488]
mov ecx, 0x2b
add edi, dword [edx + 0x320]
rep movsd dword es:[edi], dword [esi]
inc word [edx + 0x31e]
mov edi, dword [ebp - 0x72c]
mov eax, dword [ebp - 0x714]
mov esi, dword [ebp - 0x704]
sub eax, 0x1c8
dec esi
mov dword [ebp - 0x714], eax
mov dword [ebp - 0x704], esi
test esi, esi
jns 0x40c0a2
call fcn.004201e0
add eax, 0x70
mov ecx, edi
push eax
push dword [ebp - 0x70c]
call fcn.00402080
mov ecx, dword [ebp - 0x728]
sub esp, 8
push dword [0x4fe4d8]
call fcn.00414290
sub esp, 8
push dword [0x4fe4d8]
call fcn.00401800
mov ecx, eax
call fcn.00401880
mov esi, dword [0x4fe4d8]
call fcn.004201e0
mov ecx, dword [ebp - 0x73c]
add eax, 0x70
push eax
push esi
lea ecx, [ecx + 0x18]
call fcn.0040dfb0
push 0x4fe4d0
call fcn.004204f0
mov ecx, eax
call fcn.00420c00
mov eax, dword [0x4fe4d8]
movaps xmm0, xmmword [0x4f44a0]
push 0x4fe554
movups xmmword [ebp - 0x24], xmm0
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x54]
mov eax, dword [0x4fe4d8]
push 0x4fe56c
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov eax, dword [0x4fe490]
lea edx, [ebp - 0x7a8]
push edx
mov dword [ebp - 0x7a8], 0
mov dword [ebp - 0x7a4], 0
mov eax, dword [eax*4 + 0x4fe498]
mov dword [ebp - 0x7a0], eax
mov eax, dword [0x4fe4d8]
mov dword [ebp - 0x79c], 0xffffffff
mov dword [ebp - 0x798], 0
mov dword [ebp - 0x794], 4
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x68]
mov eax, dword [0x4fe4d8]
push 0
push 0
push 0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push 3
push dword [0x4fe4c8]
push eax
call dword [ecx + 0xbc]
mov ecx, dword [0x4fe4d8]
lea eax, [ebp - 0x24]
push 0
push 0
push eax
mov eax, dword [0x4fe490]
mov edx, dword [ecx]
push dword [eax*4 + 0x4fe4ac]
push ecx
call dword [edx + 0xc0]
mov eax, dword [0x4fe490]
mov eax, dword [eax*4 + 0x4fe4ac]
mov dword [ebp - 0x2c], eax
mov eax, dword [0x4fe4d8]
mov ecx, dword [eax]
lea edx, [ebp - 0x2c]
push 0x4fe4c8
push 1
push edx
push 1
push eax
call dword [ecx + 0xb8]
push 0xffffffffffffffff
sub esp, 0x18
mov dword [esp + 0x14], 0x3f800000
mov dword [esp + 0x10], 0x3f580000
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x3da00000
mov dword [esp + 4], 0x44340000
mov dword [esp], 0x44870000
push 4
call fcn.0042dc50
movss xmm2, dword [0x4f3f7c]
xorps xmm3, xmm3
mov ecx, eax
call fcn.0042ed20
call fcn.004204f0
push 1
movzx ecx, byte [eax + 0xc0]
movzx eax, word [eax + ecx*4 + 2]
push eax
push 4
push dword [0x4fe4d8]
call fcn.0042dc50
mov ecx, eax
call fcn.0042f2b0
push dword [0x4fe4d8]
call fcn.0041c1a0
mov ecx, eax
call fcn.0041c3a0
mov edi, dword [ebp - 0x700]
mov esi, dword [ebp - 0x754]
mov dword [ebp - 0x71c], esi
movzx eax, word [edi + 0xf08]
test esi, esi
je 0x40c435
push 0
push eax
push 5
push dword [0x4fe4d8]
call fcn.0042dc50
mov ecx, eax
call fcn.0042f2b0
push 0
mov ecx, 0x4fe450
call fcn.004404e0
mov esi, dword [ebp - 0x744]
call esi
sub eax, dword [ebp - 0x58]
movsd xmm1, qword [ebp - 0x50]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x4f44f0]
comisd xmm1, xmm0
ja 0x40c477
divsd xmm0, xmm1
cvttsd2si eax, xmm0
mov word [ebp - 0x54], ax
call esi
sub eax, dword [ebp - 0x58]
movsd xmm0, qword [ebp - 0x50]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x4f44f0]
comisd xmm0, xmm1
ja 0x40c477
jmp 0x40c4fc
xor eax, eax
mov word [ebp - 0x720], ax
mov esi, dword [ebp - 0x700]
lea ecx, [ebp - 0x720]
push dword [ebp - 0x708]
mov dword [ebp - 4], 2
movzx eax, word [esi + 0xf08]
push eax
call fcn.0040eee0
cmp eax, 1
je 0x40c510
cmp eax, 2
je 0x40c510
mov dword [ebp - 4], 4
push dword [ebp - 0x720]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
mov dword [ebp - 4], 0xffffffff
mov edi, dword [ebp - 0x700]
call fcn.00420dc0
cmp byte [eax + 0x62], 0
je 0x40b0e1
jmp 0x40b341
mov dword [ebp - 4], 3
push dword [ebp - 0x720]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
mov dword [ebp - 4], 0xffffffff
call fcn.00424d40
jmp 0x40c730
call fcn.00424d40
jmp 0x40c72a
call fcn.0041fac0
mov edx, dword [eax + 0x2038]
inc edx
mov ecx, edx
mov dword [eax + 0x2038], edx
xor ecx, 0x33
xor edx, 0xcc
mov dword [eax + 0x38], ecx
mov dword [eax + 0x4038], edx
call fcn.00424d40
mov esi, dword [ebp - 0x700]
lea edi, [ebp - 0x3bc]
movzx eax, word [esi + 0xf08]
mov esi, 8
mov dword [ebp - 0x2c], eax
nop word [eax + eax]
push 0x54
lea eax, [edi - 0x14]
mov byte [edi - 0x18], 3
push 0
push eax
call fcn.0047ebc0
add esp, 0xc
lea edi, [edi + 0x58]
sub esi, 1
jne 0x40c590
xor eax, eax
mov dword [ebp - 0x104], esi
mov word [ebp - 0xf8], ax
xorps xmm0, xmm0
mov byte [ebp - 0xe0], al
mov dword [ebp - 0xde], eax
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0xb4], eax
mov dword [ebp - 0xac], eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0xd8], al
mov word [ebp - 0xd0], ax
mov dword [ebp - 0xd4], eax
mov dword [ebp - 0xcc], eax
mov word [ebp - 0x3d8], ax
mov byte [ebp - 0x3d6], al
mov eax, 0xff
movq qword [ebp - 0x10c], xmm0
mov dword [ebp - 0x100], 0x3f800000
mov dword [ebp - 0xfc], esi
mov word [ebp - 0xc8], 0x300
mov word [ebp - 0xbc], 0x300
mov word [ebp - 0xb0], 0x300
mov word [ebp - 0xa4], 0x300
mov word [ebp - 0x98], 0x300
mov word [ebp - 0x8c], 0x300
mov word [ebp - 0x80], 0x300
mov word [ebp - 0x74], 0x300
mov word [ebp - 0x114], ax
mov dword [ebp - 0xec], esi
mov dword [ebp - 0xe8], esi
mov dword [ebp - 0xe4], esi
mov dword [ebp - 0x110], esi
cmp dword [ebp - 0x740], 1
lea ecx, [ebp - 0x3d8]
push dword [ebp - 0x708]
sete al
mov dword [ebp - 4], 6
movzx eax, al
push eax
push dword [ebp - 0x2c]
call fcn.00412460
push dword [ebp - 0x3d8]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
mov word [ebp - 0x3d8], ax
push eax
mov dword [ebp - 4], 7
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov word [ebp - 0x3d8], ax
mov esi, dword [ebp - 0x700]
call fcn.0041fac0
mov ecx, eax
call fcn.00420060
call fcn.00442700
mov edi, eax
mov dword [ebp - 0x718], 0
cmp byte [edi + 0x2f8], 0
jbe 0x40c794
xor esi, esi
nop dword [eax + eax]
mov ecx, dword [edi + 0x2f4]
push 1
push edi
add ecx, esi
call fcn.004466b0
mov ecx, dword [ebp - 0x718]
add esi, 0x260
movzx eax, byte [edi + 0x2f8]
inc ecx
mov dword [ebp - 0x718], ecx
cmp ecx, eax
jl 0x40c760
mov esi, dword [ebp - 0x700]
call fcn.0042dc50
mov edi, eax
mov dword [ebp - 0x718], 0
cmp byte [edi + 0x474], 0
jbe 0x40c7e4
xor esi, esi
mov ecx, dword [edi + 0x470]
push 1
push edi
add ecx, esi
call fcn.004466b0
mov ecx, dword [ebp - 0x718]
add esi, 0x260
movzx eax, byte [edi + 0x474]
inc ecx
mov dword [ebp - 0x718], ecx
cmp ecx, eax
jl 0x40c7b0
mov esi, dword [ebp - 0x700]
mov ecx, esi
call fcn.0040a7d0
nop dword [eax + eax]
push 0x1b
call dword [ebp - 0x724]
cwde
test eax, 0x10000
jne 0x40c7f0
mov al, 1
jmp 0x40c81a
push esi
push str.item__d_alloc_failed
push dword [ebp - 0x708]
call fcn.0044d1b0
add esp, 0xc
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0047d312
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4