Function at 0x4387d0
Capabilities:
Create thread

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 0x4c7f8c
mov eax, dword fs:[0]
push eax
push ebx
mov eax, 0x3520
call fcn.004c0310
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 edi, ecx
mov dword [ebp - 0x34d4], edi
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [ebp - 0x34c4], eax
xorps xmm0, xmm0
xor eax, eax
mov dword [ebp - 0x34c0], ecx
lea ecx, [ebp - 0x3c4]
mov word [ebp - 0x74], ax
movups xmmword [ebp - 0x70], xmm0
mov dword [ebp - 0x60], eax
mov byte [ebp - 0x5c], al
mov dword [ebp - 0x34f0], 4
mov dword [ebp - 0x34d8], eax
mov dword [ebp - 0x34e4], eax
mov dword [ebp - 0x34d0], 0x28
call fcn.00435ce0
xor eax, eax
mov byte [ebp - 0x12c], 1
mov word [ebp - 0x3c8], ax
mov dword [ebp - 0x12a], eax
call fcn.004344f0
push dword [ebp - 0x34c4]
mov dword [ebp - 4], 0
mov ecx, edi
mov word [ebp - 0x28], 0
mov esi, 0xff
mov byte [ebp - 0x26], 0
call fcn.004386d0
test al, al
je 0x439a42
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0x44a00000
push eax
movzx eax, word [0x4fe45a]
push eax
movzx eax, word [0x4fe458]
push eax
mov dword [ebp - 0x2c], 0x44340000
call fcn.0041e7c0
mov ecx, eax
call fcn.0041ea90
movzx eax, word [0x4fe454]
mov dword [ebp - 0x3508], 0
mov dword [ebp - 0x3504], 0
movd xmm1, eax
movzx eax, word [0x4fe456]
cvtdq2ps xmm1, xmm1
movd xmm0, eax
lea eax, [ebp - 0x3508]
cvtdq2ps xmm0, xmm0
push eax
movss dword [ebp - 0x3500], xmm1
movss dword [ebp - 0x34fc], xmm0
call fcn.00442700
mov ecx, eax
call fcn.00443190
lea eax, [ebp - 0x28]
push eax
call fcn.00422650
mov ecx, eax
call fcn.00422ec0
movss xmm1, dword [0x4f3ef0]
lea ecx, [ebp - 0x58]
xorps xmm0, xmm0
xor eax, eax
movups xmmword [ebp - 0x50], xmm0
mov word [ebp - 0x54], ax
movups xmmword [ebp - 0x40], xmm0
call fcn.0044d160
call fcn.0041fac0
mov edx, eax
mov dword [ebp - 0x34e8], edx
cmp byte [edx + 0xc], 0
jne 0x4389af
lea edi, [edx + 0x10]
lea eax, [edx + 4]
mov byte [edi], 0
mov dword [edi + 0x10], eax
lea ecx, [edx + 8]
lea eax, [edi + 8]
mov dword [edi + 0xc], ecx
push eax
push 0
push edi
push 0x44d060
push 0
push 0
mov dword [edi + 0x14], edx
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [edi + 4], eax
mov eax, dword [ebp - 0x34e8]
mov byte [eax + 0xc], 1
call fcn.0041c1a0
cmp byte [eax + 0xe], 1
je 0x4389c5
mov byte [eax + 0xe], 1
mov dword [eax + 0x10], 0x3f800000
call fcn.0041c1a0
cmp byte [eax + 0xe], 0
je 0x4389db
mov byte [eax + 0xe], 0
mov dword [eax + 0x14], 0x3cd79436
call fcn.0042d200
mov edi, eax
mov dword [ebp - 0x34e0], 0
cmp byte [edi + 0x3a4], 0
jbe 0x438a3a
xor edx, edx
mov dword [ebp - 0x34dc], edx
nop dword [eax]
mov ecx, dword [edi + 0x3a0]
push 1
push edi
add ecx, edx
call fcn.004466b0
mov ecx, dword [ebp - 0x34e0]
mov edx, dword [ebp - 0x34dc]
inc ecx
movzx eax, byte [edi + 0x3a4]
add edx, 0x260
mov dword [ebp - 0x34e0], ecx
mov dword [ebp - 0x34dc], edx
cmp ecx, eax
jl 0x438a00
call fcn.00420dc0
cmp byte [eax + 0x62], 0
jne 0x439a2d
mov eax, dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsd xmm0, qword [0x4f3d58]
mov edi, dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [ebp - 0x34f4], eax
mov eax, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
movsd qword [ebp - 0x3530], xmm0
movsd xmm0, qword [0x4f3de8]
mov dword [ebp - 0x34ec], eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [ebp - 0x34e0], edi
mov dword [ebp - 0x34e8], eax
movsd qword [ebp - 0x3500], xmm0
call fcn.00423ed0
lea ecx, [eax + 8]
call fcn.00445df0
call fcn.00420dc0
mov dword [ebp - 0x34bc], eax
mov cl, byte [eax + 0x61]
test cl, 0xf0
je 0x438aec
movzx ecx, cl
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 eax, dword [ebp - 0x34bc]
mov byte [eax + 0x61], 0
cmp byte [eax + 0x60], 0
je 0x439a03
push dword [ebp - 0x34c4]
lea eax, [ebp - 0x28]
push eax
call fcn.00422650
mov ecx, eax
call fcn.00422f70
cmp eax, 1
je 0x439a03
cmp eax, 2
je 0x439a14
call fcn.0041c1a0
mov ecx, eax
call fcn.0041c290
mov ecx, dword [ebp - 0x34d4]
cmp byte [ecx + 0x54], 0
lea eax, [ecx + 0x54]
mov dword [ebp - 0x34dc], eax
je 0x438b49
movss xmm1, dword [0x4f3cd0]
jmp 0x438b4c
xorps xmm1, xmm1
movss xmm0, dword [ecx + 0x58]
comiss xmm1, xmm0
jbe 0x438b63
addss xmm0, dword [0x4f3be8]
comiss xmm0, xmm1
jmp 0x438b73
comiss xmm0, xmm1
jbe 0x438b82
subss xmm0, dword [0x4f3be8]
comiss xmm1, xmm0
movss dword [ecx + 0x58], xmm0
jbe 0x438b82
movaps xmm0, xmm1
movss dword [ecx + 0x58], xmm1
mulss xmm0, dword [0x4f3fa4]
cvttss2si eax, xmm0
mov byte [ecx + 0x5c], al
call edi
movsd xmm0, qword [ebp - 0x40]
addsd xmm0, qword [ebp - 0x48]
movsd xmm1, qword [ebp - 0x3530]
mov dword [ebp - 0x58], eax
xor eax, eax
comisd xmm0, xmm1
movsd qword [ebp - 0x48], xmm0
jb 0x438bc3
subsd xmm0, xmm1
mov eax, 1
movsd qword [ebp - 0x48], xmm0
mov edi, dword [ebp - 0x34c0]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [ebp - 0x38]
movsd qword [ebp - 0x50], xmm0
cmp edi, 1
je 0x438bec
call fcn.0041e7c0
mov ecx, eax
call fcn.0041e850
lea eax, [ebp - 0x3524]
push eax
call fcn.0041e7c0
mov ecx, eax
call fcn.0041def0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x64], xmm0
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x5c], eax
call fcn.0041c1a0
cmp byte [eax + 0x20], 0
je 0x438c27
xor eax, eax
mov word [ebp - 0x74], ax
test edi, edi
jne 0x438db9
mov edi, dword [ebp - 0x34f4]
push 0x70
call edi
cwde
test eax, 0x10000
je 0x438d4f
call fcn.00423ed0
mov edi, eax
push 0
sub esp, 8
mov ecx, dword [edi]
mov dword [ebp - 0x34cc], 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 - 0x34cc]
push ecx
lea ecx, [edi + 0xdc]
mov byte [edx], al
call fcn.00446390
mov ecx, dword [ebp - 0x34cc]
mov al, byte [ecx]
cmp al, byte [ecx + 1]
jb 0x438c8b
mov byte [ecx], 0
push 0x10ec
lea eax, [ebp - 0x14b8]
push 0
push eax
call fcn.0047ebc0
add esp, 0xc
lea ecx, [ebp - 0x14b8]
call fcn.004296f0
mov edi, dword [ebp - 0x34c4]
lea ecx, [ebp - 0x14b8]
push edi
push str.aib_guide_scene
mov byte [ebp - 4], 1
call fcn.0042a2d0
test al, al
jne 0x438cd2
push edi
call dword [ebp - 0x34ec]
lea ecx, [ebp - 0x14b8]
mov byte [ebp - 4], 2
call fcn.00429900
mov byte [ebp - 4], 3
push dword [ebp - 0x404]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
lea ecx, [ebp - 0x14b0]
mov word [ebp - 0x404], ax
mov dword [ebp - 0x3dc], eax
mov byte [ebp - 0x402], al
mov word [ebp - 0x400], ax
call fcn.0044fb40
xor eax, eax
mov word [ebp - 0x14b8], ax
mov eax, dword [ebp - 0x14b4]
test eax, eax
je 0x438d49
push 0x8000
push 0
push eax
call dword [ebp - 0x34e8]
mov dword [ebp - 0x14b4], 0
mov byte [ebp - 4], 0
jmp 0x438db9
push 0x71
call edi
cwde
test eax, 0x10000
je 0x438db9
mov eax, dword [ebp - 0x34dc]
mov dword [ebp - 0x34c0], 2
cmp byte [eax], 0
jne 0x438d73
mov byte [eax], 1
call fcn.00423ed0
mov edi, eax
push 0
sub esp, 8
mov ecx, dword [edi]
mov dword [ebp - 0x34cc], 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 - 0x34cc]
push ecx
lea ecx, [edi + 0xdc]
mov byte [edx], al
call fcn.00446390
mov ecx, dword [ebp - 0x34cc]
mov al, byte [ecx]
cmp al, byte [ecx + 1]
jb 0x438db9
mov byte [ecx], 0
cmp dword [ebp - 0x34c0], 0
lea eax, [ebp - 0x34f0]
mov edi, dword [ebp - 0x34d4]
push eax
lea eax, [ebp - 0x74]
push eax
sete al
lea ecx, [edi + 4]
movzx eax, al
push eax
call fcn.0043a0f0
test al, al
je 0x438f14
mov eax, dword [ebp - 0x34f0]
cmp eax, 4
ja case.default.0x438df7
jmp dword [eax*4 + 0x439a88]
mov dword [ebp - 0x34c0], 3
mov dword [ebp - 0x34d8], 0
jmp 0x438efc
mov dword [ebp - 0x34c0], 3
mov dword [ebp - 0x34d8], 1
jmp 0x438efc
push dword [ebp - 0x3c8]
mov dword [ebp - 0x34c0], 1
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
push str.tx_option_a.eap
push str.tx_option
mov word [ebp - 0x3c8], ax
call fcn.0043add0
mov ecx, eax
call fcn.0043b1a0
mov word [ebp - 0x3c8], ax
test ax, ax
jne 0x438e94
push str.tex_load_failed
push 0x200
push dword [ebp - 0x34c4]
call fcn.00483128
add esp, 0xc
jmp 0x438f23
xor eax, eax
mov byte [ebp - 0x12c], 1
lea ecx, [ebp - 0x3c4]
mov word [ebp - 0x12a], ax
mov byte [ebp - 0x128], al
call fcn.004344f0
call fcn.00420dc0
mov al, byte [eax + 0xb]
mov byte [ebp - 0x127], al
jmp 0x438f23
mov dword [ebp - 0x34c0], 3
mov dword [ebp - 0x34d8], 2
jmp 0x438efc
mov dword [ebp - 0x34c0], 3
mov dword [ebp - 0x34d8], 3
jmp 0x438efc
mov eax, dword [ebp - 0x34c0]
cmp eax, 3
jne 0x438f1a
call fcn.0041c1a0
push dword [ebp - 0x34c4]
lea ecx, [eax + 0xc]
call fcn.0041c6e0
jmp 0x43915d
mov eax, dword [ebp - 0x34c0]
cmp eax, 1
jne 0x4390df
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x12c]
push eax
lea ecx, [ebp - 0x3c4]
call fcn.00434890
cmp byte [ebp - 0x12c], 0
jne 0x4390aa
mov ax, word [ebp - 0x12a]
xor cl, cl
cmp ax, 0x28
jge 0x438f67
inc ax
mov word [ebp - 0x12a], ax
jmp 0x438f69
mov cl, 1
cmp word [ebp - 0x3ba], 0
je 0x438f7b
test cl, cl
je 0x4390aa
cmp byte [ebp - 0x128], 0
je 0x438ffa
call fcn.00420dc0
mov edi, eax
movzx ecx, byte [edi + 9]
push ecx
movzx ecx, byte [edi + 2]
push ecx
movzx ecx, byte [edi + 1]
push ecx
movzx ecx, byte [edi]
push ecx
call fcn.00423ed0
mov ecx, eax
call fcn.00424370
mov cl, byte [edi + 7]
xor al, al
movaps xmm0, xmmword [0x4f4340]
cmp al, cl
movzx edx, cl
sbb eax, eax
movups xmmword [ebp - 0x3528], xmm0
and eax, edx
movaps xmm0, xmmword [0x4f4350]
movups xmmword [ebp - 0x3518], xmm0
cmp eax, 7
jae 0x438fe3
xor al, al
cmp al, cl
sbb edi, edi
and edi, edx
jmp 0x438fe8
mov edi, 7
call fcn.00443960
mov ecx, dword [ebp + edi*4 - 0x3528]
mov dword [eax + 0x138], ecx
mov word [ebp - 0x28], 0
call fcn.00420dc0
movzx ecx, byte [ebp - 0x27]
mov edi, 1
mov al, byte [eax + 0xb]
cmp byte [ebp - 0x127], al
cmovne ecx, edi
mov byte [ebp - 0x27], cl
call fcn.00420dc0
movzx ecx, byte [ebp - 0x28]
mov al, byte [eax + 0xa]
movzx eax, al
cmp dword [0x4fe460], eax
cmovne ecx, edi
mov byte [ebp - 0x28], cl
call fcn.0041fac0
mov ecx, eax
call fcn.00420060
mov dword [ebp - 0x34c0], 0
call fcn.0042dc50
mov edi, eax
mov dword [ebp - 0x34cc], 0
cmp byte [edi + 0x474], 0
jbe 0x4390aa
xor edx, edx
mov dword [ebp - 0x34bc], edx
mov ecx, dword [edi + 0x470]
push 1
push edi
add ecx, edx
call fcn.004466b0
mov ecx, dword [ebp - 0x34cc]
mov edx, dword [ebp - 0x34bc]
inc ecx
movzx eax, byte [edi + 0x474]
add edx, 0x260
mov dword [ebp - 0x34cc], ecx
mov dword [ebp - 0x34bc], edx
cmp ecx, eax
jl 0x439070
cmp dword [ebp - 0x34c0], 0
mov eax, 0x70
mov ecx, 0xff
cmove eax, ecx
movzx edx, ax
cmp si, dx
jge 0x439602
add si, 8
cmp si, dx
jle 0x439616
mov si, dx
jmp 0x439616
cmp eax, 2
jne 0x439154
test dword [ebp - 0x74], 0x3fff
je 0x4390aa
mov eax, dword [ebp - 0x34dc]
cmp byte [eax], 0
je 0x4390fb
mov byte [eax], 0
mov dword [ebp - 0x34c0], 0
call fcn.00423ed0
mov edi, eax
push 0
sub esp, 8
mov ecx, dword [edi]
mov dword [ebp - 0x34bc], 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 - 0x34bc]
push ecx
lea ecx, [edi + 0xdc]
mov byte [edx], al
call fcn.00446390
mov ecx, dword [ebp - 0x34bc]
mov al, byte [ecx]
cmp al, byte [ecx + 1]
jb 0x4390aa
mov byte [ecx], 0
jmp 0x4390aa
cmp eax, 3
jne 0x4390aa
call fcn.0041c1a0
cmp byte [eax + 0xe], 1
je 0x439173
mov byte [eax + 0xe], 1
mov dword [eax + 0x14], 0x3cd79436
mov eax, dword [ebp - 0x34e4]
inc eax
mov dword [ebp - 0x34e4], eax
cmp ax, 0x32
jle 0x4390aa
mov eax, edi
movzx eax, word [eax]
push eax
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
mov eax, edi
movzx eax, word [eax + 2]
push eax
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
mov eax, edi
xor ecx, ecx
mov dword [eax], ecx
mov eax, dword [ebp - 0x34d8]
test eax, eax
jne 0x43922f
push 0xf10
push eax
lea eax, [ebp - 0x34b8]
push eax
call fcn.0047ebc0
add esp, 0xc
lea ecx, [ebp - 0x34b8]
call fcn.0040a1b0
push dword [ebp - 0x34c4]
lea ecx, [ebp - 0x34b8]
mov byte [ebp - 4], 4
call fcn.0040a9a0
test al, al
jne 0x439204
push dword [ebp - 0x34c4]
call dword [ebp - 0x34ec]
lea ecx, [ebp - 0x34b8]
call fcn.0040a7d0
lea ecx, [ebp - 0x34b8]
mov byte [ebp - 4], 0
call fcn.0040a520
call fcn.0041c1a0
mov dword [eax + 8], 0
jmp 0x439419
cmp eax, 1
jne 0x439250
mov ecx, dword [ebp - 0x34c4]
call fcn.004334c0
call fcn.0041c1a0
mov dword [eax + 8], 0
jmp 0x439419
cmp eax, 2
jne 0x439410
push 0xa8
lea eax, [ebp - 0x120]
push 0
push eax
call fcn.0047ebc0
xorps xmm0, xmm0
mov byte [ebp - 0x110], 1
movups xmmword [ebp - 0x10c], xmm0
xor eax, eax
add esp, 0xc
movaps xmm0, xmmword [0x4f44c0]
movups xmmword [ebp - 0xfc], xmm0
mov byte [ebp - 0xec], 0
xorps xmm0, xmm0
mov dword [ebp - 0xe8], 0
movups xmmword [ebp - 0xd4], xmm0
mov dword [ebp - 0xe4], 0x3f800000
movaps xmm0, xmmword [0x4f4490]
movups xmmword [ebp - 0xc4], xmm0
mov dword [ebp - 0xe0], 0
xorps xmm0, xmm0
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xb4], 0x3eb40000
mov byte [ebp - 0xac], al
mov word [ebp - 0xaa], ax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xa4], eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], eax
mov word [ebp - 0x98], ax
movups xmmword [ebp - 0x94], xmm0
mov dword [ebp - 0x11e], eax
mov dword [ebp - 0x11a], eax
mov dword [ebp - 0x116], 0xff0000
mov dword [ebp - 0xb0], 0xffffffff
movq qword [ebp - 0x84], xmm0
mov dword [ebp - 0x7c], eax
push dword [ebp - 0x34c4]
lea ecx, [ebp - 0x120]
mov byte [ebp - 4], 5
call fcn.004277d0
mov byte [ebp - 4], 6
push dword [ebp - 0x120]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
push dword [ebp - 0x11e]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
push dword [ebp - 0x11c]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
mov dword [ebp - 0x120], eax
mov word [ebp - 0x11c], ax
push eax
mov byte [ebp - 4], 7
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
push dword [ebp - 0x11e]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
push dword [ebp - 0x11c]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
mov dword [ebp - 0x120], eax
mov word [ebp - 0x11c], ax
mov eax, dword [ebp - 0xe0]
test eax, eax
je 0x439403
push eax
call fcn.0047d79d
add esp, 4
mov dword [ebp - 0xe0], 0
xor eax, eax
mov dword [ebp - 0xdc], eax
mov byte [ebp - 4], al
jmp 0x439419
cmp eax, 3
je 0x439a2d
call fcn.0041fac0
cmp dword [eax + 0x234c], 0
jne 0x439530
call fcn.004288e0
mov ecx, eax
call fcn.00429560
comisd xmm0, xmmword [ebp - 0x3500]
jb 0x439530
push 0x10ec
lea eax, [ebp - 0x25a8]
push 0
push eax
call fcn.0047ebc0
add esp, 0xc
lea ecx, [ebp - 0x25a8]
call fcn.004296f0
push dword [ebp - 0x34c4]
lea ecx, [ebp - 0x25a8]
mov byte [ebp - 4], 8
push str.aib_ending
call fcn.0042a2d0
test al, al
jne 0x439492
push dword [ebp - 0x34c4]
call dword [ebp - 0x34ec]
jmp 0x4394b5
call fcn.0041fac0
mov dword [eax + 0x234c], 1
mov dword [eax + 0x34c], 0x7e
mov dword [eax + 0x434c], 0xb2
lea ecx, [ebp - 0x25a8]
mov byte [ebp - 4], 9
call fcn.00429900
mov byte [ebp - 4], 0xa
push dword [ebp - 0x14f4]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
lea ecx, [ebp - 0x25a0]
mov word [ebp - 0x14f4], ax
mov dword [ebp - 0x14cc], eax
mov byte [ebp - 0x14f2], al
mov word [ebp - 0x14f0], ax
call fcn.0044fb40
xor eax, eax
mov word [ebp - 0x25a8], ax
mov eax, dword [ebp - 0x25a4]
test eax, eax
je 0x43952c
push 0x8000
push 0
push eax
call dword [ebp - 0x34e8]
mov dword [ebp - 0x25a4], 0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x34d4]
push dword [ebp - 0x34c4]
mov ecx, dword [eax + 0x3c]
mov dword [ebp - 0x34bc], ecx
mov ecx, eax
call fcn.004386d0
test al, al
je 0x439a42
mov eax, dword [ebp - 0x34bc]
mov dword [edi + 0x40], eax
mov dword [edi + 0x3c], eax
movzx ecx, ax
cmp eax, 0xffffffff
je 0x4395b3
mov eax, ecx
lea ecx, [eax + eax*2]
mov eax, dword [edi + 4]
movss xmm0, dword [eax + ecx*8 + 4]
movss xmm1, dword [eax + ecx*8 + 8]
mov byte [edi + 0xc], 1
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
mov dword [edi + 0x18], eax
mov eax, 0xc
mov dword [edi + 0x1c], ecx
movss dword [edi + 0x20], xmm0
movss dword [edi + 0x24], xmm1
mov dword [edi + 0x28], 0
mov dword [edi + 0x2c], 0x3daaaaab
mov word [edi + 0x30], ax
xor eax, eax
mov word [edi + 0x36], ax
xor eax, eax
mov dword [ebp - 0x34c0], 0
mov dword [ebp - 0x34e4], eax
call fcn.0041c1a0
cmp byte [eax + 0xe], 0
je 0x4395db
mov byte [eax + 0xe], 0
mov dword [eax + 0x14], 0x3cd79436
mov edi, dword [ebp - 0x34e0]
call edi
mov dword [ebp - 0x34bc], eax
nop dword [eax]
call edi
sub eax, dword [ebp - 0x34bc]
cmp eax, 0xa
jbe 0x4395f0
jmp 0x439a03
jle 0x439616
add si, 0xfff8
mov eax, edx
cmp si, dx
movzx ecx, si
cmovl ecx, eax
mov si, cx
mov eax, dword [ebp - 0x34d0]
movzx edx, ax
test dx, dx
lea eax, [edx - 1]
movzx ecx, ax
mov eax, edx
cmove ecx, eax
movzx eax, cx
mov dword [ebp - 0x34d0], eax
call fcn.00420dc0
mov al, byte [eax + 0xc]
test al, al
je 0x439689
mov ax, word [ebp - 0x54]
test ax, ax
je 0x439689
mov edi, dword [ebp - 0x34e0]
mov ecx, 0xffff
add ax, cx
mov word [ebp - 0x54], ax
nop dword [eax]
call edi
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 0x439660
jmp 0x4399f4
call fcn.0042dc50
mov edi, eax
xor edx, edx
mov dword [ebp - 0x34bc], edi
cmp byte [edi + 0x474], dl
jbe 0x4396ca
xor ecx, ecx
mov eax, dword [edi + 0x470]
inc edx
xor edi, edi
mov word [eax + ecx + 0x254], di
add ecx, 0x260
mov edi, dword [ebp - 0x34bc]
movzx eax, byte [edi + 0x474]
cmp edx, eax
jl 0x4396a2
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
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 - 0x3520]
push edx
mov dword [ebp - 0x3520], 0
mov dword [ebp - 0x351c], 0
mov eax, dword [eax*4 + 0x4fe498]
mov dword [ebp - 0x3518], eax
mov eax, dword [0x4fe4d8]
mov dword [ebp - 0x3514], 0xffffffff
mov dword [ebp - 0x3510], 0
mov dword [ebp - 0x350c], 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 1
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]
lea edx, [ebp - 0x2c]
push 0x4fe4c8
push 1
push edx
mov eax, dword [eax*4 + 0x4fe4ac]
mov dword [ebp - 0x2c], eax
mov eax, dword [0x4fe4d8]
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0xb8]
movsx eax, si
mov ecx, eax
or ecx, 0xffffff00
shl ecx, 8
or ecx, eax
shl ecx, 8
or ecx, eax
push ecx
sub esp, 0x18
mov dword [esp + 0x14], 0x3f800000
mov dword [esp + 0x10], 0x3f800000
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x44340000
mov dword [esp], 0x44a00000
push 0
call fcn.0042dc50
xorps xmm3, xmm3
xorps xmm2, xmm2
mov ecx, eax
call fcn.0042ed20
mov edi, dword [ebp - 0x34d4]
push 0
movzx eax, word [edi]
push eax
push 0
push dword [0x4fe4d8]
call fcn.0042dc50
mov ecx, eax
call fcn.0042f2b0
movzx eax, word [edi + 2]
push eax
push ecx
push dword [0x4fe4d8]
lea ecx, [edi + 4]
call fcn.0043a7a0
cmp word [ebp - 0x3c8], 0
mov edi, dword [0x4fe4d8]
je 0x4398c7
push ecx
lea ecx, [ebp - 0x3c4]
call fcn.00435540
push 0
push dword [ebp - 0x3c8]
push 2
push edi
call fcn.0042dc50
mov ecx, eax
call fcn.0042f2b0
mov edi, dword [0x4fe4d8]
push ecx
mov ecx, dword [ebp - 0x34dc]
push edi
call fcn.0043aa90
push dword [0x4fe4d8]
call fcn.0041c1a0
mov ecx, eax
call fcn.0041c3a0
cmp dword [ebp - 0x34d8], 3
mov edi, dword [ebp - 0x34e4]
jne 0x4398fa
test di, di
jne 0x43990b
mov edx, dword [ebp - 0x34d0]
test dx, dx
je 0x43998c
jmp 0x439911
mov edx, dword [ebp - 0x34d0]
cmp di, dx
movzx eax, di
mov edi, dword [0x4fe4d8]
movzx ecx, dx
cmovg ecx, eax
movzx eax, cx
mov dword [ebp - 0x34bc], eax
call fcn.00422650
mov dword [ebp - 0x34cc], eax
mov eax, dword [ebp - 0x34bc]
test ax, ax
jle 0x43998c
movsx ecx, ax
mov dword [ebp - 0x34bc], 0
lea edx, [ecx*8]
test edx, edx
mov ecx, edx
cmovle ecx, dword [ebp - 0x34bc]
cmp ecx, 0xff
jge 0x439976
test edx, edx
jle 0x439972
shl al, 3
jmp 0x439978
xor al, al
jmp 0x439978
or al, 0xff
movzx eax, al
shl eax, 0x18
push eax
push ecx
mov ecx, dword [ebp - 0x34cc]
push edi
call fcn.00422b10
push 0
mov ecx, 0x4fe450
call fcn.004404e0
mov edi, dword [ebp - 0x34e0]
call edi
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 0x4399d0
divsd xmm0, xmm1
cvttsd2si eax, xmm0
mov word [ebp - 0x54], ax
nop
call edi
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 0x4399d0
mov eax, dword [ebp - 0x34d0]
movzx eax, ax
mov dword [ebp - 0x34d0], eax
call fcn.00420dc0
cmp byte [eax + 0x62], 0
je 0x438a96
jmp 0x439a2d
push 0
push str.Error
push dword [ebp - 0x34c4]
push dword [0x4fe450]
call dword [sym.imp.USER32.dll_MessageBoxA]
call fcn.0041fac0
mov ecx, eax
call fcn.00420060
mov byte [ebp - 0x34c5], 1
jmp 0x439a49
mov byte [ebp - 0x34c5], 0
mov dword [ebp - 4], 0xb
push dword [ebp - 0x3c8]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
mov al, byte [ebp - 0x34c5]
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