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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x338
mov dword [esp + 0x48], ecx
xor eax, eax
mov dword [esp + 0x74], eax
lea ecx, [esp + 0x1e4]
mov dword [esp + 0x18], 0xd837
mov dword [esp + 0x18], 0x6e871d97
mov dword [esp + 0x24], eax
push esi
push edi
push 2
pop edi
mov dword [esp + 0x40], edi
xor esi, esi
mov dword [esp + 0x3c], 0x4185a1fa
inc esi
mov dword [esp + 0x28], eax
or eax, 0xffffffff
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x30], 0x3e7ed6f1
mov dword [esp + 0x20], 0xe2bfbd3a
mov dword [esp + 0x28], 0x8cf5a8b0
mov dword [esp + 0x18], 6
mov dword [esp + 0x28], 0x7b6fe6d3
mov dword [esp + 0x24], 0xd017
mov dword [esp + 0x28], 0x44142b91
mov dword [esp + 0x28], eax
mov dword [esp + 0x28], 5
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], 0xebd004dd
mov dword [esp + 0x14], eax
mov dword [esp + 0x34], 9
push esi
mov dword [esp + 0x70], edx
call fcn.00401428
mov dword [esp + 0x20], 0x894628ae
lea ecx, [esp + 0x1bc]
push 4
call fcn.00401428
xor eax, eax
mov dword [esp + 0x1c], eax
jmp 0x46f252
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x190], 0x968cb667
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jl 0x46f23f
mov dword [esp + 0x1c], eax
jmp 0x46f271
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1ec]
or dword [ecx + edx*4], 0xffffffff
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jl 0x46f25e
mov dword [esp + 0x1c], eax
jmp 0x46f293
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1bc]
mov dword [ecx + edx*4], 3
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 4
jl 0x46f27d
mov dword [esp + 0x20], 0x4039b642
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x1ec]
inc dword [ecx]
jne 0x46f331
cmp dword [esp + 0x14], eax
je 0x46f2c7
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
cmp dword [esp + 0x24], eax
jne 0x46f2e1
mov ecx, dword [esp + 0x40]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x190]
cmp ecx, dword [esp + 0x18]
jle 0x46f2f6
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x190]
mov ecx, dword [esp + 0xc]
imul edx, ecx
mov ecx, dword [esp + 0x3c]
sub edx, ecx
inc edx
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x30], ecx
cmp dword [esp + 0x34], esi
jle 0x46f325
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
mov edx, eax
cmp dword [esp + 0x30], eax
je 0x46f333
mov edx, esi
mov ecx, dword [esp + 0x1bc]
cmp edx, dword [ecx + 4]
je 0x46f35d
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], al
je 0x46f369
push 0x14b4
push eax
push 0x214d
push eax
call dword [0xa740fc]
jmp 0x46f369
mov dword [esp + 0x34], 0x6af4a9b8
mov dword [esp + 0x34], eax
lea ecx, [esp + 0x1bc]
call fcn.004014fa
lea ecx, [esp + 0x1ec]
call fcn.004014fa
mov dword [esp + 0x24], 0
lea ecx, [esp + 0x120]
mov dword [esp + 0x20], 0xb44cf59
mov dword [esp + 0x1c], 0xa165018
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0x886255d5
mov dword [esp + 0x20], 0x98422518
mov dword [esp + 0x28], 0xc1676565
mov dword [esp + 0x20], edi
push esi
call fcn.00401428
mov dword [esp + 0x30], 0xffffffff
xor eax, eax
mov dword [esp + 0x28], 0xdae
mov dword [esp + 0x18], eax
jmp 0x46f3f5
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x120]
or dword [ecx + edx*4], 0xffffffff
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jl 0x46f3e2
mov edi, dword [0xa7423c]
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], al
je 0x46f417
push eax
call edi
push eax
call dword [0xa741e8]
xor eax, eax
cmp dword [esp + 0x24], eax
je 0x46f474
mov ecx, dword [esp + 0x24]
xor edx, edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], 0xcfbc
mov ecx, dword [esp + 0x20]
cmp ecx, 0x6284
mov ecx, dword [esp + 0x24]
setg dl
cmp edx, ecx
push 0
pop ecx
setg cl
sub ecx, dword [esp + 0x24]
neg ecx
push 0
sbb ecx, ecx
inc ecx
cmp ecx, 2
mov ecx, dword [esp + 0x28]
sbb edx, edx
neg edx
cmp ecx, edx
mov ecx, dword [esp + 0x18]
pop edx
setne dl
add ecx, 0x40ed3c15
add ecx, edx
mov ecx, esi
jne 0x46f476
mov ecx, eax
mov esi, dword [esp + 0x14]
xor edx, edx
add esi, ecx
mov ecx, dword [esp + 0x14]
cmp esi, ecx
setle dl
cmp edx, dword [esp + 0x14]
je 0x46f49a
cmp dword [esp + 0x24], eax
je 0x46f49a
xor esi, esi
inc esi
mov edx, esi
jmp 0x46f49f
xor esi, esi
mov edx, eax
inc esi
mov ecx, dword [esp + 0x24]
sub edx, ecx
xor ecx, ecx
cmp edx, 0x33147f59
setg cl
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x24]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
dec ecx
neg ecx
sbb ecx, ecx
neg ecx
cmp ecx, dword [esp + 0x14]
jl 0x46f50e
mov dword [esp + 0x28], 0xa3bdf78b
mov dword [esp + 0x28], 0xcb8e0045
mov dword [esp + 0x28], eax
mov dword [esp + 0x28], 0x1e34f9a3
mov dword [esp + 0x28], 0xba684a08
mov dword [esp + 0x28], 0xcd219fa4
mov eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
dec dword [esp + 0x30]
jmp 0x46f5ee
mov dword [esp + 0x20], 0xfffffffb
mov dword [esp + 0xc], 0x369e1d62
mov dword [esp + 0x18], 0xfffffff9
jmp 0x46f5dc
mov dword [esp + 0x14], 0xc34f9703
lea ecx, [esp + 0x1d4]
push esi
call fcn.00401428
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x46f55e
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1d4]
mov dword [ecx + edx*4], 0x1863d476
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x46f548
mov dword [esp + 0x14], 0xf464
mov dword [esp + 0x14], esi
cmp dword [esp + 0x14], eax
jne 0x46f5b1
mov ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x14]
je 0x46f588
mov ecx, esi
cmp dword [esp + 0x20], eax
jne 0x46f58a
mov ecx, eax
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x120]
push 0
cmp edx, dword [ecx]
pop ecx
setl cl
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x120]
mov dword [ecx], edx
lea ecx, [esp + 0x1d4]
cmp dword [esp + 0x24], eax
jne 0x46f5e9
call fcn.004014fa
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 8
jg 0x46f52b
jmp 0x46f5ee
call fcn.004014fa
lea ecx, [esp + 0x120]
call fcn.004014fa
mov eax, dword [0xa72ab0]
test al, 1
jne 0x46f680
or eax, esi
mov dword [0xa72ab0], eax
xor eax, eax
push eax
push eax
mov dword [0xa72a70], eax
mov dword [0xa72a74], eax
call fcn.00419ee6
mov ecx, eax
mov dword [0xa72a8c], 0x3f800000
mov dword [0xa72a70], ecx
xor eax, eax
mov dword [esp + 0xec], ecx
lea ecx, [esp + 0xec]
push ecx
push 0x10
push eax
mov dword [0xa72a78], eax
mov ecx, 0xa72a78
mov dword [0xa72a80], eax
mov dword [0xa72a7c], eax
lea eax, [esp + 0x60]
push eax
call fcn.00419c1c
push 0x47ed30
mov dword [0xa72a84], 7
mov dword [0xa72a88], 8
call fcn.004728df
pop ecx
mov dword [esp + 0x1c], 0x5d6c05ba
mov dword [esp + 0x30], 9
mov dword [esp + 0xc], 0xfffffff7
mov dword [esp + 0x20], 0x60546153
mov dword [esp + 0x1c], 0xfffffff6
jmp 0x46f70f
mov dword [esp + 0xc], 0xfffffffd
mov dword [esp + 0x34], esi
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0xc], 0
jne 0x46f6cd
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x30], 0x946b43d2
sbb ecx, ecx
xor eax, eax
neg ecx
add ecx, dword [esp + 0xc]
cmp ecx, 0x91ba
setne al
xor edx, edx
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x30]
cmp ecx, eax
setne dl
mov dword [esp + 0x34], edx
dec dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0xffffffe5
jle 0x46f6aa
mov dword [esp + 0x1c], 9
jmp 0x46f9c3
mov dword [esp + 0x24], 5
lea ecx, [esp + 0x144]
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], 0x77974d37
push 3
call fcn.00401428
xor eax, eax
mov dword [esp + 0x24], eax
jmp 0x46f763
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x144]
mov dword [ecx + edx*4], 0xcf83
inc dword [esp + 0x24]
cmp dword [esp + 0x24], 3
jl 0x46f74d
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
neg ecx
push 0
sbb ecx, ecx
neg ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], esi
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
cmp edx, ecx
pop ecx
setle cl
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x20]
je 0x46f814
mov dword [esp + 0x28], 0xe091e6dc
mov dword [esp + 0x28], 0xb865
mov dword [esp + 0x18], eax
jmp 0x46f7eb
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0xf0], esi
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jl 0x46f7dc
mov dword [esp + 0xf0], eax
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], al
je 0x46f9b3
push eax
push eax
push eax
call dword [0xa740e0]
jmp 0x46f9b3
push dword [esp + 0x54]
lea ecx, [esp + 0x2bc]
mov dword [esp + 0x44], 0x95dfdcaf
push ecx
lea ecx, [esp + 0x2b0]
mov dword [esp + 0xcc], eax
push ecx
xorps xmm0, xmm0
mov dword [esp + 0xd4], eax
push eax
lea ecx, [esp + 0xd4]
mov dword [esp + 0xdc], eax
movdqu xmmword [esp + 0x2b8], xmm0
call fcn.00401947
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x46f99c
mov dword [esp + 0x38], 0xfffffffe
mov dword [esp + 0x24], eax
cmp dword [esp + 0x24], 2
jg 0x46f960
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x2c], 0x60b5c0e8
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
dec ecx
neg ecx
sbb ecx, ecx
inc ecx
neg ecx
je 0x46f8ab
cmp dword [esp + 0x40], eax
jne 0x46f8ad
mov esi, eax
mov ecx, dword [esp + 0x18]
xor edx, edx
sub esi, ecx
mov ecx, dword [esp + 0x14]
cmp ecx, esi
mov ecx, dword [esp + 0x40]
push 0
setne dl
cmp edx, ecx
pop ecx
setg cl
xor edx, edx
sub ecx, dword [esp + 0x38]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x38]
cmp dword [esp + 0x34], ecx
setne dl
add edx, 0x464a4a70
je 0x46f8fa
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x20], 1
cmp dword [ecx], eax
jne 0x46f8fe
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x144]
mov esi, dword [esp + 0x144]
push 1
mov ecx, dword [ecx + edx*4]
xor edx, edx
cmp ecx, dword [esp + 0x24]
mov dword [esi + edi*4], ecx
mov ecx, dword [esp + 0x40]
setge dl
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x30]
pop esi
mov ecx, dword [ecx + 0xc]
sub edx, ecx
neg edx
sbb edx, edx
neg edx
sub edx, ecx
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
inc dword [esp + 0x24]
cmp dword [esp + 0x24], 2
jle 0x46f88b
mov edi, dword [0xa7423c]
mov dword [esp + 0x18], eax
jmp 0x46f991
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x46f98d
push 0x146
push 0x1431
call edi
push eax
call dword [0xa74230]
push eax
call dword [0xa74028]
xor eax, eax
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 2
jle 0x46f966
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 2
jle 0x46f869
lea ecx, [esp + 0xc4]
call fcn.004014fa
lea ecx, [esp + 0x144]
call fcn.004014fa
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0x13
jne 0x46f723
imul eax, dword [esp + 0x50], 0x2710
add eax, dword [esp + 0x6c]
mov dword [esp + 0x80], eax
xor eax, eax
mov dword [esp + 0x18], 0x1d96
mov dword [esp + 0x34], esi
mov dword [esp + 0x20], 0x4acc0136
mov dword [esp + 0x3c], 0xe1289ed5
mov dword [esp + 0x28], 0xfffffff8
mov dword [esp + 0xc], eax
jmp 0x46fa20
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0xf4], 0x9c279a20
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x46fa0d
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
dec ecx
jne 0x46fa42
mov ecx, dword [esp + 0x18]
cmp dword [esp + 0x18], eax
je 0x46fa7a
mov dword [esp + 0xfc], esi
cmp dword [esp + 0xfc], eax
je 0x46fa81
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], al
je 0x46fb43
push 0x78a
push eax
call edi
push eax
call dword [0xa74240]
jmp 0x46fb43
mov dword [esp + 0xfc], eax
push esi
lea ecx, [esp + 0xd4]
call fcn.00401428
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x46faa9
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xd0]
or dword [ecx + edx*4], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x46fa96
mov ecx, dword [esp + 0xd0]
cmp dword [ecx], 0x42e11914
jle 0x46fb23
mov ecx, dword [esp + 0x20]
inc dword [esp + 0x20]
test ecx, ecx
je 0x46faf2
cmp dword [esp + 0x20], eax
je 0x46fad9
cmp dword [esp + 0xfc], eax
jne 0x46fadb
mov esi, eax
mov ecx, dword [esp + 0xd0]
xor edx, edx
cmp dword [ecx], esi
setle dl
sub edx, dword [ecx]
je 0x46faf2
xor esi, esi
inc esi
jmp 0x46faf4
mov esi, eax
mov ecx, dword [esp + 0x34]
xor edx, edx
cmp esi, ecx
mov ecx, dword [esp + 0xd0]
push 0
setle dl
cmp dword [ecx], edx
pop ecx
setne cl
sub ecx, 3
neg ecx
sbb ecx, ecx
inc ecx
add ecx, 0x7762
je 0x46fb23
xor edx, edx
inc edx
jmp 0x46fb25
mov edx, eax
mov eax, dword [esp + 0x3c]
xor ecx, ecx
cmp edx, eax
sete cl
mov dword [esp + 0xfc], ecx
lea ecx, [esp + 0xd0]
call fcn.004014fa
lea eax, [esp + 0x80]
push eax
call fcn.00471682
mov esi, dword [eax]
test esi, esi
je 0x46fe90
xor edi, edi
lea ecx, [esp + 0x1a4]
inc edi
push edi
call fcn.00401428
mov dword [esp + 0x34], 0x5d870a32
xor eax, eax
mov dword [esp + 0x30], 0xa1654207
mov dword [esp + 0x20], 0xd8a
mov dword [esp + 0x1c], eax
jmp 0x46fba0
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1a4]
mov dword [ecx + edx*4], 0xe91a
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jl 0x46fb8a
mov dword [esp + 0x1c], eax
jmp 0x46fbbc
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x44], 6
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jl 0x46fbac
mov dword [esp + 0x1c], eax
jmp 0x46fbdb
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x180], 0xfffffffb
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 2
jl 0x46fbc8
mov dword [esp + 0x44], eax
jmp 0x46fc00
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x46fbfc
push edi
call dword [0xa74200]
xor eax, eax
inc dword [esp + 0x44]
cmp dword [esp + 0x44], eax
jle 0x46fbe8
imul eax, dword [esp + 0x184], 0x11d7
sub eax, 0xfffffffa
neg eax
sbb eax, eax
xor edx, edx
inc eax
imul eax, eax, 0xffff
mov dword [esp + 0x184], eax
mov eax, dword [esp + 0x34]
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x44]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp ecx, eax
setge dl
sub edx, 0xc309
neg edx
sbb edx, edx
inc edx
sub edx, dword [esp + 0x44]
mov eax, dword [esp + 0x1a4]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, dword [eax]
setge cl
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x1a4]
call fcn.004014fa
push 2
lea ecx, [esp + 0xbc]
mov dword [esp + 0xe0], esi
call fcn.00401428
push dword [esp + 0x54]
movdqa xmm0, xmmword [0xa704e0]
lea ecx, [esp + 0x2ac]
push ecx
xor eax, eax
mov dword [esp + 0x20], 0x13532fe2
lea ecx, [esp + 0x2a0]
mov dword [esp + 0x34], eax
push ecx
mov dword [esp + 0x40], 0x8ea5f34b
lea ecx, [esp + 0x168]
push eax
movdqu xmmword [esp + 0x2a8], xmm0
mov dword [esp + 0x16c], eax
mov dword [esp + 0x170], eax
mov dword [esp + 0x174], eax
call fcn.00401947
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], 0xe9a5
mov dword [esp + 0x3c], 6
mov dword [esp + 0xc], eax
jmp 0x46fd1b
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xb8]
mov dword [ecx + edx*4], edi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x46fd09
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], edi
jg 0x46fe73
mov esi, dword [esp + 0xb8]
push dword [esp + 0x54]
movdqa xmm0, xmmword [0xa70500]
lea ecx, [esp + 0x2cc]
push ecx
mov dword [esp + 0x50], 0xfffffff6
lea ecx, [esp + 0x2c0]
mov dword [esp + 0x30], 3
push ecx
mov dword [esp + 0x34], 0x5ea6edad
lea ecx, [esp + 0x180]
mov dword [esp + 0x38], 0x9a07b304
mov dword [esp + 0x34], 0xb50f6b34
push eax
movdqu xmmword [esp + 0x2c8], xmm0
mov dword [esp + 0x184], eax
mov dword [esp + 0x188], eax
mov dword [esp + 0x18c], eax
call fcn.00401947
push 2
lea ecx, [esp + 0x230]
call fcn.00401428
mov dword [esp + 0xc], 0
jmp 0x46fdd4
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x22c]
mov dword [eax + ecx*4], 0xfffffff8
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x46fdbe
xor eax, eax
cmp dword [esi + 4], eax
sete al
cmp eax, 0xda0bdbd
jg 0x46fe0e
dec dword [esp + 0x20]
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0x20]
cmp dword [ecx + edx*4], eax
jl 0x46fe0e
mov ecx, edi
jmp 0x46fe10
xor ecx, ecx
mov eax, dword [esp + 0x3c]
add eax, ecx
mov dword [esp + 0x2c], eax
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
neg edx
mov eax, dword [esp + 0xb8]
sbb edx, edx
neg edx
mov eax, dword [eax + ecx*4]
lea ecx, [esp + 0x22c]
imul eax, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [esp + 0xb8]
mov eax, dword [eax]
mov dword [esp + 0x48], eax
call fcn.004014fa
lea ecx, [esp + 0x174]
call fcn.004014fa
inc dword [esp + 0x18]
push 0
pop eax
cmp dword [esp + 0x18], edi
jle 0x46fd37
lea ecx, [esp + 0x15c]
call fcn.004014fa
lea ecx, [esp + 0xb8]
call fcn.004014fa
jmp 0x4715b6
mov eax, dword [0xa72ab0]
test al, 2
jne 0x46ff1e
or eax, 2
mov dword [0xa72ab0], eax
xor eax, eax
push eax
push eax
mov dword [0xa72a90], eax
mov dword [0xa72a94], eax
call fcn.00419ee6
mov ecx, eax
mov dword [0xa72aac], 0x3f800000
mov dword [0xa72a90], ecx
xor eax, eax
mov dword [esp + 0x110], ecx
lea ecx, [esp + 0x110]
push ecx
push 0x10
push eax
mov dword [0xa72a98], eax
mov ecx, 0xa72a98
mov dword [0xa72aa0], eax
mov dword [0xa72a9c], eax
lea eax, [esp + 0xf4]
push eax
call fcn.00419c1c
push 0x47ed2b
mov dword [0xa72aa4], 7
mov dword [0xa72aa8], 8
call fcn.004728df
pop ecx
push 3
pop edx
mov dword [esp + 0x1c], edx
xor eax, eax
mov dword [esp + 0x30], 0xfff7
mov dword [esp + 0x24], 0xb5c29478
mov dword [esp + 0x20], eax
mov dword [esp + 0x20], 0x86de
mov dword [esp + 0x2c], eax
mov dword [esp + 0x2c], 0xba6e3211
mov dword [esp + 0xc], eax
jmp 0x46ff68
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x2e8], 0x15869b92
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edx
jl 0x46ff55
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
cmp edx, ecx
push 0
pop ecx
setne cl
imul ecx, ecx, 0x93c1
cmp ecx, dword [esp + 0x30]
jge 0x46ffa8
cmp dword [esp + 0x1c], eax
je 0x46ffb3
cmp dword [esp + 0x24], eax
je 0x46ffb3
xor esi, esi
inc esi
jmp 0x46ffb5
mov esi, eax
mov ecx, dword [esp + 0x30]
xor edx, edx
cmp esi, ecx
setne dl
xor ecx, ecx
cmp edx, 0xfffffffa
setle cl
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
neg ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
cmp dword [esp + 0x24], eax
jne 0x46fff8
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
cmp edx, ecx
push 0
pop ecx
setle cl
imul ecx, ecx, 0x74d2
test ecx, ecx
je 0x470016
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
neg ecx
sbb ecx, ecx
neg ecx
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x2c], eax
je 0x47003a
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
xor esi, esi
mov dword [esp + 0x20], ecx
inc esi
mov ecx, dword [esp + 0x20]
xorps xmm0, xmm0
mov dword [esp + 0x2c], esi
mov ecx, dword [esp + 0x2c]
push dword [esp + 0xe8]
mov dword [esp + 0x2ec], ecx
lea ecx, [esp + 0x2ec]
push ecx
lea ecx, [esp + 0x2e0]
mov dword [esp + 0x140], eax
push ecx
movdqu xmmword [esp + 0xa8], xmm0
mov dword [esp + 0x24], 0x4643cdf9
lea ecx, [esp + 0x144]
push eax
movdqu xmmword [esp + 0x2e8], xmm0
mov dword [esp + 0x14c], eax
mov dword [esp + 0x150], eax
call fcn.00401947
push 3
lea ecx, [esp + 0x25c]
call fcn.00401428
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x4700d7
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x320], 0xc93b4e1
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 4
jl 0x4700c4
mov dword [esp + 0x14], eax
jmp 0x4700f6
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x258]
mov dword [ecx + edx*4], eax
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
jl 0x4700e4
mov dword [esp + 0x18], eax
jmp 0x47021b
push esi
lea ecx, [esp + 0x130]
call fcn.00401428
mov dword [esp + 0x28], 0x40ed
xor eax, eax
mov dword [esp + 0x20], 0xa1650187
mov dword [esp + 0x2c], 0x3efc1676
mov dword [esp + 0x14], eax
jmp 0x470149
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x12c]
mov dword [ecx + edx*4], 0x17f75960
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x470133
mov dword [esp + 0x14], eax
jmp 0x470165
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x70], 0xfffffffc
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x470155
mov ecx, dword [esp + 0x12c]
mov dword [ecx], 3
mov dword [esp + 0x28], 0xd91509cf
mov dword [esp + 0xc], eax
jmp 0x470195
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x300], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x470186
dec dword [esp + 0x2c]
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x4701bd
push eax
push eax
push 0x2216
call edi
push eax
call dword [0xa741fc]
xor eax, eax
mov ecx, dword [esp + 0x12c]
dec dword [ecx]
jns 0x470178
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x4701e3
push eax
push 0xe80
push eax
push eax
call dword [0xa740e4]
xor eax, eax
mov dword [esp + 0x20], 3
cmp dword [esp + 0x20], eax
jl 0x47020b
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x470205
push eax
call dword [0xa741f0]
xor eax, eax
dec dword [esp + 0x20]
jns 0x4701f1
lea ecx, [esp + 0x12c]
call fcn.004014fa
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 3
jle 0x470106
lea ecx, [esp + 0x258]
call fcn.004014fa
lea ecx, [esp + 0x138]
call fcn.004014fa
lea eax, [esp + 0x50]
push eax
call fcn.004716e4
push 3
pop edx
mov esi, dword [eax]
xor eax, eax
mov dword [esp + 0x24], 4
mov dword [esp + 0x3c], esi
mov dword [esp + 0xc], eax
jmp 0x470270
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x2f4], edx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edx
jl 0x470261
mov dword [esp + 0x24], 0x11
jmp 0x4702c3
mov dword [esp + 0x18], eax
mov dword [esp + 0x18], eax
jmp 0x47029d
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0x2f4], 0x816210b9
inc dword [esp + 0x18]
cmp dword [esp + 0x18], edx
jl 0x47028a
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x4702bf
call edi
push eax
call edi
push eax
call dword [0xa741f8]
push 3
xor eax, eax
pop edx
dec dword [esp + 0x24]
cmp dword [esp + 0x24], 0xb
jne 0x470280
cmp byte [ebp + 0xc], 0
mov dword [esp + 0x24], 0xed15de05
jne 0x4702e0
test esi, esi
jne 0x4706d9
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x150]
mov dword [esp + 0x34], 0x82bdb979
push 2
call fcn.00401428
mov dword [esp + 0xc], 0
jmp 0x47031a
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x150]
mov dword [eax + ecx*4], 0xb3a00d0e
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x470304
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
setl cl
add ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x150]
mov dword [eax + 4], ecx
mov dword [esp + 0x14], 1
cmp dword [esp + 0x14], 0
jl 0x47037b
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x150]
mov dword [eax + ecx*4], 0xfffffffc
dec dword [esp + 0x14]
jns 0x470363
lea ecx, [esp + 0x150]
call fcn.004014fa
mov dl, byte [ebp + 0xc]
lea eax, [esp + 0x330]
mov ecx, dword [esp + 0x50]
push eax
call fcn.0045e6a1
mov esi, eax
lea edi, [esp + 0xa0]
pop ecx
push 3
lea ecx, [esp + 0x94]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.00401428
mov dword [esp + 0xc], 0
jmp 0x4703d7
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x90]
mov dword [eax + ecx*4], 0xea5d6c05
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x4703c1
mov byte [esp + 0x13], 0
cmp byte [esp + 0x13], 0
je 0x4703fc
push 0x252a
call dword [0xa7423c]
push eax
call dword [0xa74210]
mov edi, dword [esp + 0x90]
mov dword [edi], 0xffffffed
mov dword [esp + 0x24], 0xd7c1188e
lea ecx, [esp + 0x24c]
mov dword [esp + 0x18], 0
push 2
call fcn.00401428
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x470445
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x24c]
mov dword [ecx + edx*4], 0xfa1e1c5a
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x47042f
mov esi, dword [esp + 0x24]
neg esi
sbb esi, esi
neg esi
cmp dword [edi + 4], eax
je 0x470484
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x18]
push 0
cmp ecx, dword [edx + 8]
mov ecx, dword [esp + 0x28]
pop edx
setl dl
sub ecx, edx
imul ecx, ecx, 0xffff
test ecx, ecx
je 0x470484
xor ecx, ecx
inc ecx
jmp 0x470486
mov ecx, eax
xor edx, edx
cmp esi, ecx
mov ecx, dword [esp + 0x90]
setne dl
push 0
cmp dword [ecx], edx
mov ecx, dword [esp + 0x1c]
pop edx
sete dl
add ecx, edx
cmp ecx, 0xd49598aa
jbe 0x4704bc
mov ecx, dword [esp + 0x90]
cmp dword [ecx], eax
jne 0x4704bc
xor esi, esi
mov ecx, eax
inc esi
jmp 0x4704c1
xor esi, esi
inc esi
mov ecx, esi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x18], esi
cmp dword [esp + 0x18], eax
jl 0x470522
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x4704f1
push eax
call dword [0xa7423c]
push eax
call dword [0xa74230]
push eax
call dword [0xa74040]
xor eax, eax
mov dword [esp + 0x24], esi
cmp dword [esp + 0x24], eax
jl 0x47051c
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x470516
push esi
call dword [0xa7423c]
push eax
call dword [0xa74204]
xor eax, eax
dec dword [esp + 0x24]
jns 0x4704fb
dec dword [esp + 0x18]
jns 0x4704cf
lea ecx, [esp + 0x24c]
call fcn.004014fa
mov eax, dword [esp + 0x90]
inc dword [eax]
cmp dword [eax], 0xffffffee
jle 0x470409
lea ecx, [esp + 0x90]
call fcn.004014fa
cmp byte [ebp + 0xc], 0
je 0x4706d9
cmp dword [esp + 0xa4], 0
je 0x4706d9
push dword [esp + 0x70]
mov eax, dword [esp + 0xac]
lea ecx, [esp + 0x2dc]
movdqa xmm0, xmmword [0xa70520]
push ecx
lea ecx, [esp + 0x2d0]
mov dword [esp + 0xe8], eax
xor eax, eax
mov dword [esp + 0x1c], 0xfffffff7
push ecx
mov dword [esp + 0x2c], 0x8876942a
lea ecx, [esp + 0x110]
push eax
movdqu xmmword [esp + 0x2d8], xmm0
mov dword [esp + 0x114], eax
mov dword [esp + 0x118], eax
mov dword [esp + 0x11c], eax
call fcn.00401947
push 3
lea ecx, [esp + 0x19c]
call fcn.00401428
xor eax, eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x14], eax
jmp 0x4705f5
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x68], 0xffffffff
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x4705e5
mov dword [esp + 0x14], eax
jmp 0x470617
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x198]
mov dword [ecx + edx*4], 0xf63588c5
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
jl 0x470601
mov dword [esp + 0x14], eax
jmp 0x470634
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x68], 0xca4f833f
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x470624
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov eax, dword [esp + 0x14]
cmp eax, 0x4f4e7975
mov eax, dword [esp + 0x68]
setge cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x104]
setne dl
xor ecx, ecx
mov dword [eax + 8], edx
mov eax, dword [esp + 0x68]
cmp edx, eax
mov eax, dword [esp + 0x198]
setle cl
xor edx, edx
mov dword [eax], ecx
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, esi
mov eax, dword [esp + 0x14]
setge dl
xor ecx, ecx
cmp eax, edx
setle cl
xor eax, eax
cmp ecx, 0x1e13ca4d
lea ecx, [esp + 0x198]
setl al
imul eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
call fcn.004014fa
lea ecx, [esp + 0x104]
call fcn.004014fa
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xe4], eax
push 3
lea ecx, [esp + 0x88]
call fcn.00401428
mov dword [esp + 0xc], 0
jmp 0x470707
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x84]
mov dword [eax + ecx*4], 0xea5d6c05
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x4706f1
mov byte [esp + 0x13], 0
cmp byte [esp + 0x13], 0
je 0x47072c
push 0x252a
call dword [0xa7423c]
push eax
call dword [0xa74210]
mov edi, dword [esp + 0x84]
mov dword [edi], 0xffffffed
mov dword [esp + 0x24], 0xd7c1188e
lea ecx, [esp + 0x278]
mov dword [esp + 0x18], 0
push 2
call fcn.00401428
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x470775
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x278]
mov dword [ecx + edx*4], 0xfa1e1c5a
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x47075f
mov esi, dword [esp + 0x24]
neg esi
sbb esi, esi
neg esi
cmp dword [edi + 4], eax
je 0x4707b4
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x18]
push 0
cmp ecx, dword [edx + 8]
mov ecx, dword [esp + 0x28]
pop edx
setl dl
sub ecx, edx
imul ecx, ecx, 0xffff
test ecx, ecx
je 0x4707b4
xor ecx, ecx
inc ecx
jmp 0x4707b6
mov ecx, eax
xor edx, edx
cmp esi, ecx
mov ecx, dword [esp + 0x84]
setne dl
push 0
cmp dword [ecx], edx
mov ecx, dword [esp + 0x1c]
pop edx
sete dl
add ecx, edx
cmp ecx, 0xd49598aa
jbe 0x4707ec
mov ecx, dword [esp + 0x84]
cmp dword [ecx], eax
jne 0x4707ec
xor esi, esi
mov ecx, eax
inc esi
jmp 0x4707f1
xor esi, esi
inc esi
mov ecx, esi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x18], esi
cmp dword [esp + 0x18], eax
jl 0x470852
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x470821
push eax
call dword [0xa7423c]
push eax
call dword [0xa74230]
push eax
call dword [0xa74040]
xor eax, eax
mov dword [esp + 0x24], esi
cmp dword [esp + 0x24], eax
jl 0x47084c
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x470846
push esi
call dword [0xa7423c]
push eax
call dword [0xa74204]
xor eax, eax
dec dword [esp + 0x24]
jns 0x47082b
dec dword [esp + 0x18]
jns 0x4707ff
lea ecx, [esp + 0x278]
call fcn.004014fa
mov eax, dword [esp + 0x84]
inc dword [eax]
cmp dword [eax], 0xffffffee
jle 0x470739
lea ecx, [esp + 0x84]
call fcn.004014fa
mov edi, dword [esp + 0x3c]
test edi, edi
jne 0x470f91
cmp dword [esp + 0x9c], edi
jle 0x470f91
xor eax, eax
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x14], eax
jmp 0x4708b8
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x314], 0xf75d
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
jl 0x4708a5
mov dword [esp + 0x14], eax
jmp 0x4708d5
push esi
lea ecx, [esp + 0x16c]
call fcn.00401428
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], 0
jmp 0x470fc6
push dword [esp + 0xc]
lea ecx, [esp + 0x16c]
call fcn.00401516
mov dword [eax], 0xe0bcd8c4
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x470fac
mov byte [esp + 0x13], 0
cmp byte [esp + 0x13], 0
je 0x470fee
mov eax, dword [ebp + 8]
lea esi, [esp + 0xdc]
mov edi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov esp, ebp
pop ebp
ret