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

Disassembly:
sub esp, 0x54c
mov eax, dword [esp + 0x550]
push ebx
push ebp
mov ebp, ecx
mov ecx, dword [esp + 0x55c]
push esi
push edi
push 0
mov dword [esp + 0x18], ebp
mov dword [ebp + 0x1504], eax
mov dword [ebp + 0x1508], ecx
call fcn.004720e9
mov edi, dword [esp + 0x56c]
add esp, 4
mov esi, eax
cmp edi, 0x12c
jbe 0x403207
xor esi, esi
call dword [sym.imp.WINMM.dll_timeGetTime]
push eax
call fcn.0045ab4a
add esp, 4
test esi, esi
jne 0x40321f
mov dword [ebp + 0x18], edi
jmp 0x40323c
call fcn.0045ab29
cdq
mov ecx, 0x7fff
idiv ecx
add edi, 2
mov eax, esi
mov ecx, edx
xor edx, edx
div edi
add ecx, eax
mov dword [ebp + 0x18], ecx
mov edx, dword [ebp + 0x18]
push edx
call fcn.0045ab4a
add esp, 4
cmp dword [ebp + 0x152c], 0
jg 0x403270
cmp dword [ebp + 0x1530], 0
jg 0x403270
cmp dword [ebp + 0x1534], 0
jg 0x403270
mov dword [ebp + 0x1528], 0xffffffff
jmp 0x40328d
call fcn.0045ab29
cdq
mov ecx, 3
idiv ecx
mov dword [ebp + 0x1528], edx
cmp dword [ebp + edx*4 + 0x152c], 0
jle 0x403270
mov eax, dword [ebp + 0x44c]
cmp eax, 0x64
mov edx, dword [ebp + 0x2c]
mov ebx, dword [ebp + 0x30]
mov dword [ebp + 0x14], 0
mov dword [esp + 0x24], edx
jle 0x4032b0
mov dword [ebp + 0x14], 0x63
cmp eax, 3
jne 0x4037ed
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x28]
shl eax, 4
push eax
push 0
push ecx
call fcn.00451c30
mov eax, dword [ebp + 0x24]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x40], eax
xor eax, eax
add esp, 0xc
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x30], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x18], esi
mov edi, edi
test esi, esi
je 0x403311
mov ecx, dword [ebp + esi*4 + 0x1c8]
mov dword [esp + 0x20], ecx
jmp 0x403319
mov dword [esp + 0x20], 0
xor edi, edi
lea ecx, [ebp + 0x38]
mov edi, edi
mov eax, dword [ecx - 4]
cmp dword [ebp + esi*4 + 0x1cc], eax
jl 0x403358
cmp dword [esp + 0x20], eax
jge 0x403358
mov eax, dword [ecx]
add dword [esp + esi*4 + 0x54], eax
xor edx, edx
test eax, eax
jle 0x403356
mov eax, dword [esp + 0x34]
lea esi, [edi + 1]
lea eax, [eax + ebx*4]
mov dword [eax], esi
inc edx
add eax, 4
cmp edx, dword [ecx]
jl 0x403348
mov esi, dword [esp + 0x18]
add ebx, dword [ecx]
inc edi
add ecx, 0x18
cmp edi, 0x11
jl 0x403320
xor edi, edi
lea edx, [ebp + 0x26c]
lea esp, [esp]
cmp edi, 0x28
jge 0x4033b9
mov eax, dword [edx - 4]
cmp dword [ebp + esi*4 + 0x1cc], eax
jl 0x4033b0
cmp dword [esp + 0x20], eax
jge 0x4033b0
mov eax, dword [edx]
add dword [esp + esi*4 + 0x54], eax
xor ecx, ecx
test eax, eax
jle 0x4033ae
mov eax, dword [esp + 0x34]
lea esi, [edi + 0x65]
lea eax, [eax + ebx*4]
lea ecx, [ecx]
mov dword [eax], esi
inc ecx
add eax, 4
cmp ecx, dword [edx]
jl 0x4033a0
mov esi, dword [esp + 0x18]
add ebx, dword [edx]
inc edi
add edx, 0xc
cmp edi, 0x2a
jl 0x403370
inc esi
cmp esi, 6
mov dword [esp + 0x18], esi
jl 0x403300
xor eax, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x18]
mov eax, dword [esp + esi*4 + 0x54]
lea esi, [esp + esi*4 + 0x54]
mov dword [esp + 0x40], eax
test eax, eax
jle 0x4037ce
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x40]
cdq
idiv ecx
mov dword [esp + 0x44], 0
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
test ecx, ecx
jle 0x4037ce
mov eax, dword [esp + 0x48]
mov edx, ecx
mov ecx, dword [esp + 0x34]
add edx, eax
mov eax, dword [esi]
lea edx, [ecx + edx*4]
mov dword [esp + 0x28], edx
mov dword [esp + 0x4c], eax
jmp 0x403430
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
push ecx
mov ecx, edi
call fcn.00402be0
mov ebp, eax
add ebp, dword [esp + 0x44]
call fcn.0045ab29
mov ecx, dword [esp + 0x20]
cdq
idiv ecx
mov eax, dword [esp + 0x48]
dec ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x28]
sub ecx, 4
mov dword [esp + 0x28], ecx
add edx, eax
mov eax, dword [esp + 0x34]
mov esi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, dword [ecx]
dec esi
cmp esi, 0x64
mov dword [eax], edx
mov dword [ecx], 0
jge 0x403729
mov ecx, dword [esp + 0x30]
mov eax, ebp
shl eax, 4
cmp dword [eax + ecx + 4], 0
lea eax, [eax + ecx + 4]
je 0x4034b5
mov edi, dword [edi + 0xc]
lea ecx, [ecx]
inc ebp
add eax, 0x10
cmp ebp, edi
jge 0x4037c3
cmp dword [eax], 0
jne 0x4034a0
mov edi, dword [esp + 0x14]
push 0x64
mov ecx, edi
call fcn.00402be0
lea edx, [esi + esi*2 + 9]
cmp eax, dword [edi + edx*8]
jge 0x40371c
mov ecx, dword [esp + 0x14]
lea eax, [esi + esi*2]
push 0x64
lea edi, [ecx + eax*8]
call fcn.00402be0
cmp eax, dword [edi + 0x44]
jl 0x40355c
mov ecx, dword [edi + 0x40]
mov edx, dword [edi + 0x3c]
mov eax, dword [edi + 0x34]
push ecx
xor ecx, ecx
cmp esi, 0xc
setge cl
push edx
cdq
inc ecx
idiv ecx
lea edx, [esp + 0x74]
push eax
push edx
call fcn.00402390
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov edi, dword [eax + 8]
mov ebx, dword [eax + 0xc]
mov eax, dword [esp + 0x40]
shl ebp, 4
add eax, ebp
mov dword [eax], ecx
mov dword [eax + 4], edx
add esp, 0x10
cmp esi, 0xc
mov dword [eax + 8], edi
mov dword [eax + 0xc], ebx
jl 0x403530
mov dword [eax], 0xc8
cmp dword [eax], 0
je 0x4037c3
cmp dword [eax + 4], 0
je 0x4037c3
cmp dword [eax + 0xc], 0
je 0x4037c3
cmp dword [eax + 8], 0
jne 0x40371c
jmp 0x4037c3
xor ebx, ebx
cmp dword [edi + 0x3c], ebx
jle 0x403593
call fcn.0045ab29
cdq
idiv dword [edi + 0x3c]
inc edx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fdiv qword [0x4a15c0]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fimul dword [edi + 0x34]
fadd qword [0x4a15b8]
call fcn.004506b0
mov ebx, eax
call fcn.0045ab29
and eax, 0x80000001
jns 0x4035a4
dec eax
or eax, 0xfffffffe
inc eax
mov edi, dword [edi + 0x34]
jne 0x4035ad
add edi, ebx
jmp 0x4035af
sub edi, ebx
push 0x78
lea ecx, [esp + 0xf8]
push 0
push ecx
call fcn.00451c30
xor edx, edx
add esp, 0xc
xor ebx, ebx
cmp esi, 0xc
setge dl
inc edx
mov dword [esp + 0x24], edx
cmp edi, 0x1388
jg 0x4035df
cmp esi, 0xc
jl 0x4035f8
cmp edi, 0x1770
jg 0x403604
cmp esi, 0xc
jl 0x403604
mov eax, 0xfa0
mov edi, 0x1770
jmp 0x403626
mov eax, 0xbb8
mov edi, 0x1388
jmp 0x403626
cmp edi, 0x3a98
jge 0x403621
xor eax, eax
cmp esi, 0xc
setge al
dec eax
and eax, 0xfffffc18
add eax, 0x1770
jmp 0x403626
mov eax, 0x2710
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x18]
push edi
push eax
call fcn.00403040
test eax, eax
jle 0x403642
mov dword [esp + ebx*4 + 0xf4], eax
inc ebx
sub edi, eax
cmp edi, 0x7d0
jg 0x403651
cmp esi, 0xc
jl 0x403667
cmp edi, 0xfa0
jg 0x40365e
cmp esi, 0xc
jge 0x403667
cmp ebx, 0x1e
jl 0x4035d2
mov dword [esp + 0x2c], ebp
test ebx, ebx
jle 0x40371c
mov dword [esp + 0x24], ebx
jmp 0x403680
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
shl edx, 4
cmp dword [edx + eax + 4], 0
lea edi, [edx + eax]
jne 0x40370d
mov dword [edi], 0x64
call fcn.0045ab29
cdq
idiv ebx
mov ecx, esi
imul ecx, ecx, 0x64
add ecx, 0x63
dec ebx
cmp esi, 0xc
mov dword [edi + 8], ecx
mov ecx, dword [esp + ebx*4 + 0xf4]
mov dword [edi + 0xc], 1
lea eax, [esp + edx*4 + 0xf4]
mov edx, dword [eax]
mov dword [edi + 4], edx
mov dword [eax], ecx
jl 0x4036d6
mov dword [edi], 0xc8
call fcn.0045ab29
cdq
mov ecx, 0x1e
idiv ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
lea eax, [eax + edx + 1]
cmp eax, dword [ecx + 0xc]
mov dword [esp + 0x2c], eax
jl 0x403711
lea eax, [ebp - 0x3c]
mov dword [esp + 0x2c], eax
test eax, eax
jge 0x403711
mov dword [esp + 0x2c], 0
jmp 0x403711
inc dword [esp + 0x2c]
sub dword [esp + 0x24], 1
jne 0x403680
mov edx, dword [esp + 0x1c]
add dword [esp + 0x44], edx
jmp 0x4037c3
mov eax, 0xae147ae1
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x64
add esi, eax
lea ecx, [esi + esi*2]
mov ebx, dword [edi + ecx*4 + 0x268]
lea edx, [esi + esi*2 + 0x9c]
mov eax, dword [edi + edx*4]
mov edx, dword [esp + 0x30]
mov ecx, ebp
shl ecx, 4
cmp dword [ecx + edx + 4], 0
mov dword [esp + 0x24], eax
lea eax, [ecx + edx + 4]
je 0x403781
mov edi, dword [edi + 0xc]
mov edi, edi
inc ebp
add eax, 0x10
cmp ebp, edi
jge 0x4037c3
cmp dword [eax], 0
jne 0x403770
mov edi, dword [esp + 0x14]
push 0x64
mov ecx, edi
call fcn.00402be0
cmp eax, dword [esp + 0x24]
jge 0x4037bb
mov eax, dword [esp + 0x30]
shl ebp, 4
add eax, ebp
cmp esi, 0x14
mov dword [eax + 8], 0x63
mov dword [eax + 4], ebx
mov dword [eax + 0xc], 1
mov dword [eax], 0x64
jl 0x4037bb
mov dword [eax], 0xc8
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x44], ecx
sub dword [esp + 0x4c], 1
jne 0x403430
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x40]
add dword [esp + 0x48], edx
inc eax
cmp eax, 6
mov dword [esp + 0x18], eax
jl 0x4033d1
jmp 0x404988
cmp eax, 2
jne 0x404163
push 0x44
xor esi, esi
lea eax, [esp + 0xf8]
push esi
push eax
xor edi, edi
call fcn.00451c30
xor ebx, ebx
push 0xfa0
lea eax, [ebp + 0x460]
push ebx
push eax
mov dword [esp + 0x48], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x68], eax
call fcn.00451c30
push 0x150
lea ecx, [esp + 0x2d8]
push ebx
push ecx
call fcn.00451c30
push 0x150
lea edx, [esp + 0x194]
push ebx
push edx
call fcn.00451c30
push 0x150
lea eax, [esp + 0x440]
push ebx
push eax
call fcn.00451c30
add esp, 0x3c
xor eax, eax
lea ecx, [ebp + 0x50]
jmp 0x403880
mov edx, dword [ecx - 0x18]
mov dword [esp + eax*4 + 0xf4], edx
add esi, edx
mov edx, dword [ecx]
mov dword [esp + eax*4 + 0xf8], edx
add eax, 2
add edi, edx
add ecx, 0x30
cmp eax, 0x10
jl 0x403880
cmp eax, 0x11
jge 0x4038b5
lea ecx, [eax + eax*2]
mov ebx, dword [ebp + ecx*8 + 0x38]
mov dword [esp + eax*4 + 0xf4], ebx
add esi, edi
add ebx, esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x18], 0
lea esi, [ebp + 0x26c]
jmp 0x4038d0
mov eax, dword [esi]
test eax, eax
jle 0x403a05
cmp dword [esp + 0x18], 0x28
je 0x403a05
cmp dword [esp + 0x18], 0x29
je 0x403a05
mov ecx, dword [esi - 4]
xor edi, edi
xor ebx, ebx
cmp ecx, 0x3a98
jg 0x403956
test eax, eax
jle 0x403a05
push 0x64
mov ecx, ebp
call fcn.00402be0
cmp eax, dword [esi + 4]
jge 0x403916
inc edi
inc ebx
cmp ebx, dword [esi]
jl 0x403907
test edi, edi
jle 0x403a05
mov ecx, dword [esp + 0x1c]
mov edx, dword [esi - 4]
lea eax, [edi + edi*4]
add eax, eax
cmp dword [esp + 0x18], 0x14
mov dword [esp + ecx*8 + 0x2bc], edx
mov dword [esp + ecx*8 + 0x2c0], eax
jl 0x40394c
inc eax
mov dword [esp + ecx*8 + 0x2c0], eax
inc ecx
mov dword [esp + 0x1c], ecx
jmp 0x403a05
cmp ecx, 0x186a0
jl 0x4039b2
test eax, eax
jle 0x403a05
push 0x64
mov ecx, ebp
call fcn.00402be0
cmp eax, dword [esi + 4]
jge 0x403975
inc edi
inc ebx
cmp ebx, dword [esi]
jl 0x403966
test edi, edi
jle 0x403a05
mov eax, dword [esi - 4]
mov ecx, dword [esp + 0x40]
mov dword [esp + ecx*8 + 0x40c], eax
lea eax, [edi + edi*4]
add eax, eax
cmp dword [esp + 0x18], 0x14
mov dword [esp + ecx*8 + 0x410], eax
jl 0x4039ab
inc eax
mov dword [esp + ecx*8 + 0x410], eax
inc ecx
mov dword [esp + 0x40], ecx
jmp 0x403a05
test eax, eax
jle 0x403a05
push 0x64
mov ecx, ebp
call fcn.00402be0
cmp eax, dword [esi + 4]
jge 0x4039c5
inc edi
inc ebx
cmp ebx, dword [esi]
jl 0x4039b6
test edi, edi
jle 0x403a05
mov eax, dword [esi - 4]
mov ecx, eax
imul ecx, edi
add dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + ecx*8 + 0x16c], eax
lea eax, [edi + edi*4]
add eax, eax
cmp dword [esp + 0x18], 0x14
mov dword [esp + ecx*8 + 0x170], eax
jl 0x403a00
inc eax
mov dword [esp + ecx*8 + 0x170], eax
inc ecx
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x18]
inc eax
add esi, 0xc
cmp eax, 0x2a
mov dword [esp + 0x18], eax
jl 0x4038d0
mov edx, dword [esp + 0x1c]
dec edx
push edx
lea eax, [esp + 0x2c0]
push 0
push eax
call fcn.00402b30
mov edi, dword [esp + 0x2c]
lea ecx, [edi - 1]
push ecx
lea edx, [esp + 0x17c]
push 0
push edx
call fcn.00402b30
mov eax, dword [esp + 0x58]
dec eax
push eax
lea ecx, [esp + 0x428]
push 0
push ecx
call fcn.00402b30
mov eax, dword [ebp + 0x1504]
mov dword [esp + 0x4c], eax
cdq
mov ecx, 0xea60
idiv ecx
mov esi, dword [ebp + 0xc]
add esp, 0x24
mov ebx, eax
mov dword [esp + 0x34], eax
mov eax, edx
cdq
idiv dword [ebp + 0x1500]
mov dword [esp + 0x3c], eax
test ebx, ebx
jle 0x403abd
mov eax, esi
fild dword [esp + 0x30]
cdq
idiv ebx
fidiv dword [esp + 0x28]
fstp dword [esp + 0x28]
fld dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
cdq
idiv ebx
mov dword [esp + 0x28], eax
fimul dword [esp + 0x28]
call fcn.004506b0
mov dword [esp + 0x20], eax
jmp 0x403ad2
mov edx, dword [esp + 0x30]
mov ebx, 1
mov dword [esp + 0x34], ebx
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], edx
mov eax, dword [ebp + 0x28]
shl esi, 4
push esi
push 0
push eax
call fcn.00451c30
mov ecx, dword [ebp + 0x28]
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x28]
add esp, 0xc
mov dword [esp + 0x38], ecx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x44], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], ebx
mov byte [esp + 0x13], 0
jmp 0x403b10
mov ebx, dword [esp + 0x34]
mov edi, edi
cmp byte [esp + 0x13], 0
jne 0x403b27
call fcn.0045ab29
cdq
idiv ebx
mov ebp, edx
mov dword [esp + 0x28], edx
jmp 0x403b64
xor ebp, ebp
xor eax, eax
test ebx, ebx
jle 0x403b60
mov ecx, dword [esp + 0x50]
xor edx, edx
jmp 0x403b40
mov esi, dword [ecx]
mov edi, dword [esp + 0x14]
cmp esi, dword [edx + edi + 0x460]
jg 0x403b58
mov ebp, eax
lea edx, [eax*4]
inc eax
add ecx, 4
cmp eax, ebx
jl 0x403b40
mov dword [esp + 0x28], ebp
mov eax, ebp
imul eax, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
nop
lea eax, [ebx - 1]
xor ecx, ecx
xor edi, edi
cmp ebp, eax
jne 0x403b9e
mov esi, dword [esp + 0x3c]
test esi, esi
jle 0x403b9e
mov eax, 0x51eb851f
imul esi
mov eax, esi
imul eax, eax, 0x64
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cdq
idiv ebx
mov edi, eax
mov edx, dword [esp + 0x24]
add ecx, edx
push ecx
mov ecx, dword [esp + 0x18]
call fcn.00402be0
mov ecx, dword [esp + 0x38]
mov esi, eax
add esi, dword [esp + 0x1c]
mov eax, esi
shl eax, 4
cmp dword [eax + ecx + 4], 0
jne 0x403d04
cmp dword [esp + 0x30], 0
jg 0x403d32
cmp dword [esp + 0x48], 0
jg 0x403dcd
cmp dword [esp + 0x44], 0
jg 0x40408f
cmp dword [esp + 0x4c], 0
jle 0x403d0f
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov eax, dword [edx + ebp*4 + 0x460]
add edi, ecx
cmp eax, edi
mov dword [esp + 0x40], edi
jl 0x403c18
cmp byte [esp + 0x13], 0
je 0x403cc7
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + edi*8 + 0x164]
add edx, eax
mov eax, dword [esp + 0x14]
lea ecx, [esp + edi*8 + 0x164]
mov dword [eax + ebp*4 + 0x460], edx
mov edx, dword [esp + 0x38]
shl esi, 4
add esi, edx
mov dword [esi + 8], 0x63
mov eax, dword [ecx]
mov dword [esi + 4], eax
mov dword [esi + 0xc], 1
mov dword [esi], 0x64
mov eax, dword [esp + edi*8 + 0x168]
cdq
mov ebx, 0xa
idiv ebx
cmp edx, 1
jne 0x403c73
mov dword [esi], 0xc8
add dword [esp + edi*8 + 0x168], 0xfffffff6
cmp dword [esp + edi*8 + 0x168], ebx
jge 0x403cb2
mov edx, dword [esp + edi*8 + 0x164]
dec edi
mov dword [ecx], edx
mov eax, dword [esp + edi*8 + 0x170]
mov dword [ecx + 4], eax
mov dword [esp + 0x4c], edi
mov dword [esp + edi*8 + 0x16c], 0
mov dword [esp + edi*8 + 0x170], 0
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
cmp dword [edx + ebp*4 + 0x460], ecx
jl 0x403cc7
dec dword [esp + 0x18]
cmp dword [esp + 0x18], 0
jg 0x403cd3
mov byte [esp + 0x13], 1
cmp dword [esp + 0x4c], 0
jg 0x403b0a
cmp dword [esp + 0x44], 0
jg 0x403b0a
cmp dword [esp + 0x30], 0
jg 0x403b0a
cmp dword [esp + 0x48], 0
jle 0x404988
jmp 0x403b0a
cmp dword [esp + 0x4c], 0
jg 0x403b70
cmp dword [esp + 0x44], 0
jg 0x403b70
cmp dword [esp + 0x30], 0
jg 0x403b70
cmp dword [esp + 0x48], 0
jg 0x403b70
jmp 0x403cc7
call fcn.0045ab29
cdq
idiv dword [esp + 0x30]
mov eax, dword [esp + 0x38]
shl esi, 4
add esi, eax
mov dword [esi + 8], 0x63
mov ecx, dword [esp + edx*8 + 0x2bc]
mov dword [esi + 4], ecx
mov dword [esi + 0xc], 1
mov dword [esi], 0x64
mov eax, dword [esp + edx*8 + 0x2c0]
mov ebx, 0xa
lea edi, [esp + edx*8 + 0x2bc]
lea ecx, [esp + edx*8 + 0x2c0]
cdq
idiv ebx
cmp edx, 1
jne 0x403d8b
mov dword [esi], 0xc8
add dword [ecx], 0xfffffff6
cmp dword [ecx], ebx
jge 0x403cc7
mov eax, dword [esp + 0x30]
mov edx, dword [esp + eax*8 + 0x2b4]
dec eax
mov dword [edi], edx
mov ecx, dword [esp + eax*8 + 0x2c0]
mov dword [edi + 4], ecx
mov dword [esp + 0x30], eax
mov dword [esp + eax*8 + 0x2bc], 0
mov dword [esp + eax*8 + 0x2c0], 0
jmp 0x403cc7
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov ecx, dword [edx + ebp*4 + 0x460]
add edi, eax
cmp ecx, edi
mov dword [esp + 0x40], edi
jle 0x403df1
cmp byte [esp + 0x13], 0
je 0x403cc7
mov edx, dword [esp + 0x2c]
cmp dword [esp + edx*4 + 0xf4], 0
jle 0x404074
mov ebp, edx
mov edx, dword [esp + 0x14]
lea eax, [ebp + ebp*2]
lea edi, [edx + eax*8]
mov eax, dword [edi + 0x34]
cmp eax, 0x3a98
lea ebx, [edi + 0x34]
jle 0x403e2a
add eax, ecx
mov ecx, dword [esp + 0x28]
mov dword [edx + ecx*4 + 0x460], eax
push 0x64
mov ecx, edx
call fcn.00402be0
cmp eax, dword [edi + 0x44]
jl 0x403e8f
mov edx, dword [edi + 0x40]
mov eax, dword [edi + 0x3c]
xor ecx, ecx
push edx
cmp ebp, 0xc
setge cl
push eax
mov eax, dword [ebx]
cdq
inc ecx
idiv ecx
lea edx, [esp + 0x74]
push eax
push edx
call fcn.00402390
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov edi, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov ebx, dword [esp + 0x48]
shl esi, 4
add esi, ebx
mov dword [esi], ecx
mov dword [esi + 4], edx
add esp, 0x10
cmp ebp, 0xc
mov dword [esi + 8], edi
mov dword [esi + 0xc], eax
jl 0x40403f
mov dword [esi], 0xc8
jmp 0x40403f
cmp dword [edi + 0x3c], 0
mov dword [esp + 0x1c], 0
jle 0x403ece
call fcn.0045ab29
cdq
idiv dword [edi + 0x3c]
inc edx
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fdiv qword [0x4a15c0]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fimul dword [ebx]
fadd qword [0x4a15b8]
call fcn.004506b0
mov dword [esp + 0x1c], eax
call fcn.0045ab29
and eax, 0x80000001
jns 0x403edf
dec eax
or eax, 0xfffffffe
inc eax
mov edi, dword [ebx]
jne 0x403ee9
add edi, dword [esp + 0x1c]
jmp 0x403eed
sub edi, dword [esp + 0x1c]
push 0x78
lea eax, [esp + 0x80]
push 0
push eax
call fcn.00451c30
xor ecx, ecx
add esp, 0xc
xor ebx, ebx
cmp ebp, 0xc
setge cl
inc ecx
mov dword [esp + 0x1c], ecx
cmp edi, 0x1388
jg 0x403f1d
cmp ebp, 0xc
jl 0x403f36
cmp edi, 0x1770
jg 0x403f42
cmp ebp, 0xc
jl 0x403f42
mov eax, 0xfa0
mov edi, 0x1770
jmp 0x403f64
mov eax, 0xbb8
mov edi, 0x1388
jmp 0x403f64
cmp edi, 0x3a98
jge 0x403f5f
xor eax, eax
cmp ebp, 0xc
setge al
dec eax
and eax, 0xfffffc18
add eax, 0x1770
jmp 0x403f64
mov eax, 0x2710
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
push edx
push edi
push eax
call fcn.00403040
test eax, eax
jle 0x403f7d
mov dword [esp + ebx*4 + 0x7c], eax
inc ebx
sub edi, eax
cmp edi, 0x7d0
jg 0x403f8c
cmp ebp, 0xc
jl 0x403fa2
cmp edi, 0xfa0
jg 0x403f99
cmp ebp, 0xc
jge 0x403fa2
cmp ebx, 0x1e
jl 0x403f10
mov dword [esp + 0x1c], ebx
mov ebp, dword [esp + 0x1c]
mov ebx, esi
test ebp, ebp
jle 0x40403f
mov dword [esp + 0x1c], ebp
jmp 0x403fc0
mov ecx, dword [esp + 0x38]
mov eax, ebx
shl eax, 4
cmp dword [eax + ecx + 4], 0
lea edi, [eax + ecx]
jne 0x404037
mov dword [edi], 0x64
call fcn.0045ab29
cdq
idiv ebp
mov ecx, dword [esp + 0x2c]
mov eax, ecx
imul eax, eax, 0x64
add eax, 0x63
mov dword [edi + 8], eax
dec ebp
cmp ecx, 0xc
mov dword [edi + 0xc], 1
lea eax, [esp + edx*4 + 0x7c]
mov edx, dword [eax]
mov dword [edi + 4], edx
mov edx, dword [esp + ebp*4 + 0x7c]
mov dword [eax], edx
jl 0x404012
mov dword [edi], 0xc8
call fcn.0045ab29
cdq
mov ecx, 0x1e
idiv ecx
lea ebx, [ebx + edx + 1]
mov edx, dword [esp + 0x14]
cmp ebx, dword [edx + 0xc]
jl 0x404038
lea ebx, [esi - 0x3c]
test ebx, ebx
jge 0x404038
xor ebx, ebx
jmp 0x404038
inc ebx
sub dword [esp + 0x1c], 1
jne 0x403fc0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + eax*4 + 0xf4]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x28]
dec ecx
mov dword [esp + eax*4 + 0xf4], ecx
mov ecx, dword [esp + 0x40]
mov eax, 1
sub dword [esp + 0x48], eax
cmp dword [edx + esi*4 + 0x460], ecx
jl 0x404074
sub dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
cmp dword [esp + eax*4 + 0xf4], 0
jg 0x403cc7
inc dword [esp + 0x2c]
jmp 0x403cc7
call fcn.0045ab29
mov ecx, dword [esp + 0x14]
cdq
idiv dword [esp + 0x44]
mov eax, dword [ecx + ebp*4 + 0x460]
mov ecx, dword [esp + 0x20]
add edi, ecx
cmp eax, edi
mov dword [esp + 0x40], edi
jl 0x4040bd
cmp byte [esp + 0x13], 0
je 0x403cc7
mov edi, dword [esp + edx*8 + 0x40c]
add edi, eax
mov eax, dword [esp + 0x14]
lea ecx, [esp + edx*8 + 0x40c]
mov dword [eax + ebp*4 + 0x460], edi
mov eax, dword [esp + 0x38]
shl esi, 4
add esi, eax
mov dword [esi + 8], 0x63
mov eax, dword [ecx]
lea edi, [esp + edx*8 + 0x410]
mov dword [esi + 4], eax
mov dword [esi + 0xc], 1
mov dword [esi], 0x64
mov eax, dword [edi]
cdq
mov ebx, 0xa
idiv ebx
cmp edx, 1
jne 0x404116
mov dword [esi], 0xc8
add dword [edi], 0xfffffff6
cmp dword [edi], ebx
jge 0x40414f
mov eax, dword [esp + 0x44]
mov edx, dword [esp + eax*8 + 0x404]
dec eax
mov dword [ecx], edx
mov edx, dword [esp + eax*8 + 0x410]
mov dword [ecx + 4], edx
mov dword [esp + 0x44], eax
mov dword [esp + eax*8 + 0x40c], 0
mov dword [esp + eax*8 + 0x410], 0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
cmp dword [ecx + ebp*4 + 0x460], eax
jmp 0x403cc1
cmp eax, 1
je 0x4045a4
cmp eax, 0x64
jg 0x4045a4
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x28]
shl eax, 4
push eax
push 0
push ecx
call fcn.00451c30
mov edx, dword [ebp + 0x28]
add esp, 0xc
add ebp, 0x38
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], 0
mov ebx, 0x63
mov dword [esp + 0x2c], ebp
jmp 0x4041b0
mov eax, dword [esp + 0x2c]
cmp dword [eax - 4], 0
je 0x404489
mov ecx, eax
cmp dword [ecx], 0
je 0x404489
mov edx, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [edx]
mov eax, dword [eax + 0xc]
cdq
idiv ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x28], 0
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
push ecx
mov ecx, edi
call fcn.00402be0
add eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov edx, eax
shl edx, 4
cmp dword [edx + ecx + 4], 0
lea esi, [edx + ecx]
mov dword [esp + 0x34], eax
jne 0x404478
push 0x64
mov ecx, edi
call fcn.00402be0
mov edx, dword [esp + 0x2c]
cmp eax, dword [edx + 0x10]
jge 0x40446a
push 0x64
mov ecx, edi
call fcn.00402be0
mov ebp, dword [esp + 0x2c]
cmp eax, dword [ebp + 0xc]
jl 0x4042c5
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 4]
push eax
mov eax, dword [ebp - 4]
push ecx
xor ecx, ecx
cmp dword [esp + 0x20], 0xc
cdq
setge cl
inc ecx
idiv ecx
lea edx, [esp + 0x74]
push eax
push edx
call fcn.00402390
mov ecx, dword [eax]
mov dword [esi], ecx
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov ecx, dword [eax + 8]
mov dword [esi + 8], ecx
mov edx, dword [eax + 0xc]
add esp, 0x10
cmp ebx, 0x513
mov dword [esi + 0xc], edx
jl 0x40428d
mov dword [esi], 0xc8
cmp dword [esi], 0
je 0x404489
cmp dword [esi + 4], 0
je 0x404489
cmp dword [esi + 0xc], 0
je 0x404489
cmp dword [esi + 8], 0
je 0x404489
mov eax, dword [esp + 0x1c]
add dword [esp + 0x28], eax
dec dword [esp + 0x38]
jmp 0x40447e
xor edi, edi
cmp dword [ebp + 4], edi
jle 0x4042fc
call fcn.0045ab29
cdq
idiv dword [ebp + 4]
inc edx
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
fdiv qword [0x4a15c0]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fimul dword [ebp - 4]
fadd qword [0x4a15b8]
call fcn.004506b0
mov edi, eax
call fcn.0045ab29
and eax, 0x80000001
jns 0x40430d
dec eax
or eax, 0xfffffffe
inc eax
mov esi, dword [ebp - 4]
jne 0x404316
add esi, edi
jmp 0x404318
sub esi, edi
push 0x78
lea eax, [esp + 0x80]
push 0
push eax
call fcn.00451c30
xor ecx, ecx
add esp, 0xc
xor ebp, ebp
cmp dword [esp + 0x18], 0xc
setge cl
inc ecx
mov edi, ecx
jmp 0x404340
cmp esi, 0x1388
jg 0x404350
cmp ebx, 0x513
jl 0x40436c
cmp esi, 0x1770
jg 0x404378
cmp ebx, 0x513
jl 0x404378
mov eax, 0xfa0
mov esi, 0x1770
jmp 0x40439d
mov eax, 0xbb8
mov esi, 0x1388
jmp 0x40439d
cmp esi, 0x3a98
jge 0x404398
xor eax, eax
cmp ebx, 0x513
setge al
dec eax
and eax, 0xfffffc18
add eax, 0x1770
jmp 0x40439d
mov eax, 0x2710
mov ecx, dword [esp + 0x14]
push edi
push esi
push eax
call fcn.00403040
test eax, eax
jle 0x4043b2
mov dword [esp + ebp*4 + 0x7c], eax
inc ebp
sub esi, eax
cmp esi, 0x7d0
jg 0x4043c4
cmp ebx, 0x513
jl 0x4043dd
cmp esi, 0xfa0
jg 0x4043d4
cmp ebx, 0x513
jge 0x4043dd
cmp ebp, 0x1e
jl 0x404340
mov edi, dword [esp + 0x34]
test ebp, ebp
jle 0x40446a
mov dword [esp + 0x20], ebp
lea ecx, [ecx]
mov eax, dword [esp + 0x24]
mov edx, edi
shl edx, 4
cmp dword [edx + eax + 4], 0
lea esi, [edx + eax]
jne 0x404462
mov dword [esi], 0x64
call fcn.0045ab29
cdq
idiv ebp
mov ecx, dword [esp + edx*4 + 0x7c]
dec ebp
cmp ebx, 0x513
mov dword [esi + 8], ebx
mov dword [esi + 0xc], 1
mov dword [esi + 4], ecx
lea eax, [esp + edx*4 + 0x7c]
mov edx, dword [esp + ebp*4 + 0x7c]
mov dword [eax], edx
jl 0x40443b
mov dword [esi], 0xc8
call fcn.0045ab29
cdq
mov ecx, 0x1e
idiv ecx
lea edi, [edi + edx + 1]
mov edx, dword [esp + 0x14]
cmp edi, dword [edx + 0xc]
jl 0x404463
mov edi, dword [esp + 0x34]
add edi, 0xffffffc4
jns 0x404463
xor edi, edi
jmp 0x404463
inc edi
sub dword [esp + 0x20], 1
jne 0x4043f0
mov eax, dword [esp + 0x1c]
add dword [esp + 0x28], eax
dec dword [esp + 0x38]
jmp 0x40447e
inc eax
cmp eax, dword [edi + 0xc]
jge 0x404489
cmp dword [esp + 0x38], 0
jg 0x4041e7
inc dword [esp + 0x18]
add dword [esp + 0x2c], 0x18
add ebx, 0x64
cmp ebx, 0x707
jl 0x4041b0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x44c]
cmp eax, 0x64
mov byte [esp + 0x13], 0
jl 0x4044c1
add eax, 0xffffff9c
mov byte [esp + 0x13], 1
mov dword [esp + 0x20], eax
lea eax, [ecx + 0x26c]
xor ebp, ebp
mov dword [esp + 0x28], eax
jmp 0x4044d4
mov eax, dword [esp + 0x28]
mov ecx, dword [eax - 4]
mov edx, dword [eax + 4]
mov dword [esp + 0x50], ecx
mov ecx, dword [eax]
mov dword [esp + 0x3c], edx
cmp ebp, 0x28
je 0x404590
cmp ebp, 0x29
je 0x404590
test ecx, ecx
je 0x404590
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0xc]
cdq
xor edi, edi
idiv ecx
mov dword [esp + 0x38], ecx
mov ebx, eax
mov ecx, dword [esp + 0x14]
push ebx
call fcn.00402be0
mov ecx, dword [esp + 0x24]
add eax, edi
shl eax, 4
cmp dword [eax + ecx + 4], 0
lea esi, [eax + ecx]
jne 0x404589
mov ecx, dword [esp + 0x14]
push 0x64
call fcn.00402be0
cmp eax, dword [esp + 0x3c]
jge 0x404583
cmp ebp, 0x14
mov edx, dword [esp + 0x50]
mov dword [esi + 8], 0x63
mov dword [esi + 4], edx
mov dword [esi + 0xc], 1
mov dword [esi], 0x64
jl 0x404564
mov dword [esi], 0xc8
cmp byte [esp + 0x13], 0
je 0x404583
mov ecx, dword [esp + 0x14]
push 0x64
call fcn.00402be0
cmp eax, dword [esp + 0x20]
jge 0x404583
mov dword [esi + 0xc], 2
add edi, ebx
dec dword [esp + 0x38]
cmp dword [esp + 0x38], 0
jg 0x404510
add dword [esp + 0x28], 0xc
inc ebp
cmp ebp, 0x2a
jl 0x4044d0
jmp 0x404988
xor edi, edi
xor edx, edx
lea esi, [ebp + 0x38]
jmp 0x4045b0
xor eax, eax
cmp dword [esi], eax
jle 0x4045ca
lea ecx, [ebx + edi*4]
lea esp, [esp]
mov dword [ecx], edx
inc eax
add ecx, 4
cmp eax, dword [esi]
jl 0x4045c0
inc edx
add edi, eax
add esi, 0x18
cmp edx, 0x11
jl 0x4045b0
mov esi, dword [ebp + 0x10]
mov edi, dword [esp + 0x24]
lea esp, [esp]
call fcn.0045ab29
cdq
idiv esi
dec esi
add edi, 4
mov eax, dword [ebx + edx*4]
mov dword [edi - 4], eax
mov ecx, dword [ebx + esi*4]
mov dword [ebx + edx*4], ecx
test esi, esi
jne 0x4045e0
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x28]
shl edx, 4
push edx
push esi
push eax
call fcn.00451c30
mov ecx, dword [ebp + 0x28]
add esp, 0xc
cmp dword [ebp + 0x10], esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], esi
jle 0x404887
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0xc]
push edx
call fcn.00402be0
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x34], eax
shl eax, 4
cmp dword [eax + ecx + 4], 0
lea esi, [eax + ecx]
jne 0x404628
mov eax, dword [edi]
mov ebx, dword [esp + 0x14]
lea edx, [eax + eax*2]
push 0x64
mov ecx, ebx
lea ebp, [ebx + edx*8]
call fcn.00402be0
cmp eax, dword [ebp + 0x44]
jl 0x4046bc
mov eax, dword [edi]
lea ecx, [eax + eax*2]
mov edx, dword [ebx + ecx*8 + 0x40]
lea ecx, [ebx + ecx*8]
xor ebx, ebx
cmp eax, 0xc
mov eax, dword [ecx + 0x34]
push edx
mov edx, dword [ecx + 0x3c]
setge bl
push edx
cdq
inc ebx
idiv ebx
push eax
lea eax, [esp + 0x78]
push eax
call fcn.00402390
mov ecx, dword [eax]
mov dword [esi], ecx
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov ecx, dword [eax + 8]
mov dword [esi + 8], ecx
mov edx, dword [eax + 0xc]
add esp, 0x10
mov dword [esi + 0xc], edx
cmp dword [edi], 0xc
jl 0x40486e
mov dword [esi], 0xc8
jmp 0x40486e
xor ebx, ebx
cmp dword [ebp + 0x3c], ebx
mov ebp, dword [esp + 0x14]
jle 0x404700
mov eax, dword [edi]
lea eax, [eax + eax*2]
lea esi, [ebp + eax*8]
call fcn.0045ab29
cdq
idiv dword [esi + 0x3c]
inc edx
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
fdiv qword [0x4a15c0]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fimul dword [esi + 0x34]
fadd qword [0x4a15b8]
call fcn.004506b0
mov ebx, eax
call fcn.0045ab29
and eax, 0x80000001
jns 0x404711
dec eax
or eax, 0xfffffffe
inc eax
mov eax, dword [edi]
jne 0x404720
lea ecx, [eax + eax*2]
mov esi, dword [ebp + ecx*8 + 0x34]
add esi, ebx
jmp 0x404729
lea edx, [eax + eax*2]
mov esi, dword [ebp + edx*8 + 0x34]
sub esi, ebx
push 0x78
lea eax, [esp + 0x80]
push 0
push eax
call fcn.00451c30
add esp, 0xc
xor ebx, ebx
nop
cmp esi, 0x1388
jg 0x40474f
mov eax, dword [edi]
cmp eax, 0xc
jl 0x40476a
cmp esi, 0x1770
jg 0x404776
mov eax, dword [edi]
cmp eax, 0xc
jl 0x404776
mov eax, 0xfa0
mov esi, 0x1770
jmp 0x404798
mov eax, 0xbb8
mov esi, 0x1388
jmp 0x404798
cmp esi, 0x3a98
jge 0x404793
xor eax, eax
cmp dword [edi], 0xc
setge al
dec eax
and eax, 0xfffffc18
add eax, 0x1770
jmp 0x404798
mov eax, 0x2710
xor ecx, ecx
cmp dword [edi], 0xc
setge cl
inc ecx
push ecx
push esi
push eax
mov ecx, ebp
call fcn.00403040
test eax, eax
jle 0x4047b4
mov dword [esp + ebx*4 + 0x7c], eax
inc ebx
sub esi, eax
cmp esi, 0x7d0
jg 0x4047c3
cmp dword [edi], 0xc
jl 0x4047d9
cmp esi, 0xfa0
jg 0x4047d0
cmp dword [edi], 0xc
jge 0x4047d9
cmp ebx, 0x1e
jl 0x404740
mov dword [esp + 0x20], ebx
mov ebp, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
test ebp, ebp
jle 0x40486e
mov dword [esp + 0x24], ebp
mov eax, dword [esp + 0x28]
mov edx, ebx
shl edx, 4
cmp dword [edx + eax + 4], 0
lea esi, [edx + eax]
jne 0x404866
mov dword [esi], 0x64
call fcn.0045ab29
cdq
idiv ebp
mov ecx, dword [edi]
imul ecx, ecx, 0x64
add ecx, 0x63
dec ebp
mov dword [esi + 8], ecx
mov ecx, dword [esp + ebp*4 + 0x7c]
mov dword [esi + 0xc], 1
lea eax, [esp + edx*4 + 0x7c]
mov edx, dword [eax]
mov dword [esi + 4], edx
cmp dword [edi], 0xc
mov dword [eax], ecx
jl 0x40483f
mov dword [esi], 0xc8
call fcn.0045ab29
cdq
mov ecx, 0xf
idiv ecx
lea ebx, [ebx + edx + 1]
mov edx, dword [esp + 0x14]
cmp ebx, dword [edx + 0xc]
jl 0x404867
mov ebx, dword [esp + 0x34]
add ebx, 0xffffffc4
jns 0x404867
xor ebx, ebx
jmp 0x404867
inc ebx
sub dword [esp + 0x24], 1
jne 0x4047f1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
inc eax
add edi, 4
cmp eax, dword [ecx + 0x10]
mov dword [esp + 0x18], eax
jl 0x404628
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x44c]
cmp eax, 0xc8
mov byte [esp + 0x13], 0
jle 0x4048ab
add eax, 0xffffff38
mov byte [esp + 0x13], 1
mov dword [esp + 0x50], eax
xor ebp, ebp
add ecx, 0x26c
mov dword [esp + 0x24], ecx
jmp 0x4048c4
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov ebx, dword [ecx - 4]
mov dword [esp + 0x20], edx
mov dword [esp + 0x3c], eax
cmp ebp, 0x28
je 0x404979
cmp ebp, 0x29
je 0x404979
mov dword [esp + 0x18], 0
test edx, edx
jle 0x404979
mov edi, dword [esp + 0x14]
lea ebx, [ebx]
mov ecx, dword [edi + 0xc]
push ecx
mov ecx, edi
call fcn.00402be0
mov edx, dword [esp + 0x28]
shl eax, 4
cmp dword [eax + edx + 4], 0
lea esi, [eax + edx]
jne 0x404900
push 0x64
mov ecx, edi
call fcn.00402be0
cmp eax, dword [esp + 0x3c]
jge 0x40496a
cmp ebp, 0x14
mov dword [esi + 8], 0x63
mov dword [esi + 4], ebx
mov dword [esi + 0xc], 1
mov dword [esi], 0x64
jl 0x40494d
mov dword [esi], 0xc8
cmp byte [esp + 0x13], 0
je 0x40496a
push 0x64
mov ecx, edi
call fcn.00402be0
cmp eax, dword [esp + 0x50]
jge 0x40496a
mov dword [esi + 0xc], 2
mov eax, dword [esp + 0x18]
inc eax
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x18], eax
jl 0x404900
add dword [esp + 0x24], 0xc
inc ebp
cmp ebp, 0x2a
jl 0x4048c0
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
pop edi
pop esi
pop ebp
mov dword [eax + 4], 0
mov dword [eax + 8], ecx
pop ebx
add esp, 0x54c
ret 0xc