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

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0xa0
cmp dword [eax + 0x64], 0
push ebx
push ebp
mov ebp, dword [esp + 0xc0]
push esi
push edi
je 0x445d09
cmp dword [eax + 0x34], 0
jne 0x445d09
add dword [ebp], 0xe
add dword [ebp + 4], 0x20
mov ebx, dword [esp + 0xb4]
mov edx, 0x5d47d8
lea esi, [ebx + 0x180]
mov dword [esp + 0x5c], esi
nop
mov ecx, dword [edx - 8]
mov eax, dword [edx - 4]
and ecx, dword [esi]
and eax, dword [esi + 4]
or ecx, eax
je 0x445d4b
mov ecx, dword [ebx + 0x158]
mov eax, dword [ebx + 0x15c]
and ecx, dword [edx]
and eax, dword [edx + 4]
or ecx, eax
je 0x445d4b
add dword [ebp + 8], 0xffffff44
add edx, 0x10
cmp edx, 0x5d4818
jl 0x445d20
mov eax, dword [esp + 0xbc]
xor ecx, ecx
mov esi, 0x1f
mov eax, dword [eax + 8]
cmp eax, 0xffff82ff
cmovne ecx, eax
add dword [ebp], ecx
mov eax, dword [ebx + 0x104]
mov dword [esp + 0x48], eax
mov edi, dword [ebx + 0x100]
mov dword [esp + 0x10], edi
mov ecx, dword [eax*8 + 0x4b6a80]
mov eax, dword [eax*8 + 0x4b6a84]
or eax, dword [ebx + 0x164]
or ecx, dword [ebx + 0x160]
not eax
and eax, dword [ebx + 0x1b4]
not ecx
and ecx, dword [ebx + 0x1b0]
mov dword [esp + 0x68], eax
mov eax, dword [ebx + 0x118]
mov edx, eax
cmp eax, esi
mov dword [esp + 0x2c], ecx
cmova eax, esi
cmova edx, esi
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x60], edx
xor edx, edx
mov eax, dword [eax + 8]
cmp eax, 0xffff82ff
cmovne edx, eax
xor esi, esi
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x18], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
mov eax, dword [edx + 0x10]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0xc4]
mov dword [esi + 0x18], eax
mov eax, dword [edx + 0x14]
mov dword [esi + 0x1c], eax
mov eax, dword [edx + 0x10]
or dword [esi + 8], eax
mov eax, dword [edx + 0x14]
or dword [esi + 0xc], eax
mov eax, edi
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x48]
cdq
and edx, 7
add eax, edx
sar eax, 3
xor edx, edx
mov dword [esp + 0x58], eax
jmp 0x445e59
mov esi, dword [esp + 0xc4]
jmp 0x445e59
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x4c], edx
mov eax, ecx
mov edx, dword [esp + 0x68]
or eax, edx
je 0x446aa5
bsf edi, ecx
mov dword [esp + 0x1c], edi
jne 0x445e87
bsf edi, edx
je 0x445e7e
add edi, 0x20
jmp 0x445e83
mov edi, 0x7f
mov dword [esp + 0x1c], edi
mov eax, dword [edi*8 + 0x4b6a84]
mov ecx, dword [edi*8 + 0x4b6a80]
not eax
and edx, eax
not ecx
mov eax, dword [ebx + edi*4]
and dword [esp + 0x2c], ecx
and eax, 7
mov ecx, dword [esp + 0x2c]
add eax, 0xfffffffe
mov dword [esp + 0x68], edx
mov edx, 0x3f
sub edx, edi
cmp eax, 3
ja case.default.0x445ebc
jmp dword [eax*4 + 0x446eb4]
mov eax, dword [edx*4 + 0x4cfa78]
mov esi, dword [esp + 0xb8]
add eax, 0x1f8
add dword [ebp], eax
mov eax, dword [edx*4 + 0x4cfb78]
lea edx, [edi*8 + 0x4f0980]
add eax, 0x1e3
mov dword [esp + 0x20], edx
add dword [ebp + 4], eax
mov eax, dword [esp + 0xb8]
mov ecx, dword [ebx + 0x1b8]
or ecx, dword [eax + 0x40]
mov eax, dword [ebx + 0x1bc]
not ecx
or eax, dword [esi + 0x44]
and ecx, dword [edx]
not eax
and eax, dword [edx + 4]
push eax
push ecx
call fcn.00406190
mov eax, dword [eax*4 + 0x4cf470]
add dword [ebp + 8], eax
mov eax, edi
test eax, eax
jns 0x445f2f
add eax, 7
sar eax, 3
cmp dword [eax*8 + 0x4b6ddc], 4
mov esi, dword [esp + 0xc4]
jle 0x445fbe
mov ecx, dword [edi*8 + 0x5d4e80]
mov eax, dword [edi*8 + 0x5d4e84]
and ecx, dword [ebx + 0x158]
and eax, dword [ebx + 0x15c]
or ecx, eax
jne 0x445fbe
shl edi, 4
mov edx, dword [edi + 0x4eff08]
and edx, dword [ebx + 0x160]
mov esi, dword [edi + 0x4eff0c]
mov eax, edx
and esi, dword [ebx + 0x164]
xor edi, edi
or eax, esi
je 0x445fa3
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
inc edi
mov eax, edx
or eax, esi
jne 0x445f84
cmp edi, 1
jl 0x445fa3
mov edi, 1
mov eax, dword [edi*4 + 0x4cfca0]
add dword [ebp], eax
mov eax, dword [edi*4 + 0x4cfca8]
add dword [ebp + 4], eax
mov esi, dword [esp + 0xc4]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
mov eax, dword [edx]
or dword [esi + 8], eax
mov eax, dword [edx + 4]
or dword [esi + 0xc], eax
mov eax, dword [edx]
or dword [esi + 0x28], eax
mov eax, dword [edx + 4]
or dword [esi + 0x2c], eax
mov eax, dword [edx]
or dword [esi + 0x48], eax
mov eax, dword [edx + 4]
or dword [esi + 0x4c], eax
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
and ecx, dword [edx]
and eax, dword [edx + 4]
or dword [esi + 0x88], ecx
or dword [esi + 0x8c], eax
cmp dword [esp + 0x54], 0xc
mov ecx, dword [esp + 0x2c]
jle 0x445e55
mov esi, dword [edi*8 + 0x5d4a80]
and esi, dword [edx]
mov eax, dword [edi*8 + 0x5d4a84]
mov ecx, esi
and eax, dword [edx + 4]
mov edx, dword [esp + 0x18]
or ecx, eax
mov ecx, dword [esp + 0x2c]
je 0x445e44
xor edi, edi
mov edx, esi
mov ecx, eax
add edx, 0xffffffff
adc ecx, 0xffffffff
and esi, edx
and eax, ecx
inc edi
mov ecx, esi
or ecx, eax
jne 0x446034
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0xc4]
add ecx, 0x17
imul eax, edi, 0x15
add ecx, eax
lea eax, [edi - 1]
mov dword [esp + 0x3c], ecx
xor ecx, ecx
test eax, eax
cmovle eax, ecx
mov ecx, dword [esp + 0x40]
lea ecx, [ecx + eax*2]
add ecx, 4
inc dword [esp + 0x38]
mov dword [esp + 0x40], ecx
jmp 0x445e4d
mov eax, dword [edx*4 + 0x4cf878]
lea esi, [edi + edi*2]
add eax, 0x207
add dword [ebp], eax
mov eax, dword [edx*4 + 0x4cf978]
add eax, 0x201
add dword [ebp + 4], eax
mov eax, dword [esi*8 + 0x5d1204]
and eax, dword [ebx + 0x1bc]
mov edx, dword [esi*8 + 0x5d120c]
mov ecx, dword [esi*8 + 0x5d1200]
and ecx, dword [ebx + 0x1b8]
imul edx, eax
mov eax, dword [esi*8 + 0x5d1208]
imul eax, ecx
mov ecx, dword [esi*8 + 0x5d1214]
xor edx, eax
mov eax, dword [esi*8 + 0x5d1210]
shr edx, cl
mov esi, dword [eax + edx*8]
mov eax, dword [eax + edx*8 + 4]
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], esi
or dword [edx + 0xc], eax
or dword [edx + 8], esi
or dword [edx + 0x3c], eax
or dword [edx + 0x38], esi
or dword [edx + 0x4c], eax
or dword [edx + 0x48], esi
mov ecx, dword [edx + 8]
mov eax, dword [edx + 0xc]
and ecx, esi
and eax, dword [esp + 0x30]
or dword [edx + 0x88], ecx
or dword [edx + 0x8c], eax
cmp dword [esp + 0x54], 0xc
jle 0x4461f0
mov eax, dword [esp + 0x10]
mov edx, dword [eax*8 + 0x5d4a80]
and edx, esi
mov esi, dword [eax*8 + 0x5d4a84]
and esi, dword [esp + 0x30]
mov eax, edx
or eax, esi
jne 0x446196
mov ecx, dword [ebx + 0x1a0]
mov eax, dword [ebx + 0x1a4]
and ecx, dword [esp + 0x28]
and eax, dword [esp + 0x30]
or ecx, eax
je 0x4461f0
push 1
push edi
lea eax, [esp + 0x88]
mov ecx, ebx
push eax
call fcn.0040df90
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx*8 + 0x5d4a80]
and edx, dword [eax]
mov esi, dword [ecx*8 + 0x5d4a84]
and esi, dword [eax + 4]
mov eax, edx
or eax, esi
je 0x4461f0
mov eax, edx
xor ecx, ecx
or eax, esi
je 0x4461c4
mov ebp, ecx
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
inc ebp
mov eax, edx
or eax, esi
jne 0x4461a0
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
imul eax, ecx, 0x15
add edx, 0x17
add edx, eax
lea eax, [ecx - 1]
xor ecx, ecx
mov dword [esp + 0x3c], edx
test eax, eax
cmovle eax, ecx
mov ecx, dword [esp + 0x40]
lea ecx, [ecx + eax*2]
add ecx, 4
inc dword [esp + 0x38]
mov dword [esp + 0x40], ecx
mov eax, edi
test eax, eax
jns 0x4461f9
add eax, 7
sar eax, 3
cmp dword [eax*8 + 0x4b6ddc], 4
jle 0x446292
mov ecx, dword [edi*8 + 0x5d4e80]
mov eax, dword [edi*8 + 0x5d4e84]
and ecx, dword [ebx + 0x158]
and eax, dword [ebx + 0x15c]
or ecx, eax
jne 0x446292
mov eax, edi
shl eax, 4
mov edx, dword [eax + 0x4eff08]
mov esi, dword [eax + 0x4eff0c]
and edx, dword [ebx + 0x160]
and esi, dword [ebx + 0x164]
mov eax, edx
or eax, esi
je 0x44627e
mov ebp, ecx
nop dword [eax]
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
inc ebp
mov eax, edx
or eax, esi
jne 0x446250
mov dword [esp + 0x14], ebp
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0xc8]
cmp ecx, 1
jl 0x44627e
mov ecx, 1
mov eax, dword [ecx*4 + 0x4cfcb0]
add dword [ebp], eax
mov eax, dword [ecx*4 + 0x4cfcb8]
add dword [ebp + 4], eax
push 0
push dword [esp + 0x14]
mov ecx, ebx
push edi
call fcn.00440050
mov ecx, dword [ebx + 0x1b8]
mov edi, eax
mov eax, dword [esp + 0xb8]
not ecx
mov esi, dword [eax + 0x40]
mov edx, dword [eax + 0x44]
not esi
mov eax, dword [ebx + 0x1bc]
not edx
not eax
and esi, ecx
and esi, dword [esp + 0x28]
and edx, eax
and edx, dword [esp + 0x30]
push edx
push esi
call fcn.00406190
mov edx, dword [esp + 0x18]
inc edx
mov eax, dword [eax*4 + 0x4cffc8]
add dword [ebp + 8], eax
test edi, edi
cmove edx, dword [esp + 0x4c]
mov esi, dword [esp + 0xc4]
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], edx
jmp 0x445e59
mov ecx, dword [edx*4 + 0x4cfcf0]
mov eax, dword [ebp]
add ecx, 0x2f8
add eax, ecx
mov ecx, dword [edx*4 + 0x4cfdf0]
mov dword [ebp], eax
lea edx, [edi + edi*2]
mov dword [esp + 0x20], eax
add ecx, 0x31a
mov eax, dword [ebp + 4]
add eax, ecx
shl edx, 3
mov dword [ebp + 4], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], edx
mov eax, dword [edx + 0x500c04]
and eax, dword [ebx + 0x1bc]
mov ecx, dword [edx + 0x500c00]
mov edx, dword [edx + 0x500c0c]
and ecx, dword [ebx + 0x1b8]
imul edx, eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x500c08]
imul eax, ecx
xor edx, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x500c14]
mov eax, dword [eax + 0x500c10]
shr edx, cl
mov ecx, dword [eax + edx*8]
mov eax, dword [eax + edx*8 + 4]
mov dword [esp + 0x14], eax
mov eax, edi
cdq
and edx, 7
mov dword [esp + 0x44], ecx
add eax, edx
and eax, 0xfffffff8
mov dword [esp + 0x50], eax
mov eax, dword [eax + 0x4b6ddc]
mov dword [esp + 0x34], eax
cmp eax, 7
jne 0x446421
mov eax, dword [esp + 0x6c]
cmp dword [eax*8 + 0x4b6ddc], 8
je 0x4463d9
mov ecx, dword [ebx + 0x158]
mov eax, dword [ebx + 0x15c]
and ecx, dword [0x4f1d88]
and eax, dword [0x4f1d8c]
or ecx, eax
je 0x446421
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
add eax, 0xc
mov dword [ebp + 4], eax
mov ecx, dword [edi*8 + 0x4f0580]
mov eax, dword [edi*8 + 0x4f0584]
and ecx, dword [ebx + 0x190]
and eax, dword [ebx + 0x194]
and ecx, dword [esp + 0x44]
and eax, edx
or ecx, eax
je 0x446425
mov eax, dword [esp + 0x20]
add eax, 0x40
mov dword [ebp], eax
mov eax, dword [esp + 0x28]
add eax, 0x5e
mov dword [ebp + 4], eax
jmp 0x446425
mov edx, dword [esp + 0x14]
mov eax, edi
and eax, 0x80000007
jns 0x446433
dec eax
or eax, 0xfffffff8
inc eax
or dword [esi + 0xc], edx
inc eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x44]
or dword [esi + 8], eax
or dword [esi + 0x58], eax
or dword [esi + 0x5c], edx
mov ecx, dword [esi + 8]
and ecx, eax
mov eax, dword [esi + 0xc]
or dword [esi + 0x88], ecx
and eax, edx
or dword [esi + 0x8c], eax
lea ecx, [ebx + 0x158]
lea eax, [ebx + 0x160]
push eax
lea eax, [esp + 0x8c]
push eax
call fcn.00406160
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx*8 + 0x4f1c78]
mov ecx, dword [ecx*8 + 0x4f1c7c]
and edx, dword [eax]
and ecx, dword [eax + 4]
or edx, ecx
jne 0x44649b
add dword [ebp], 0x1c
add dword [ebp + 4], 0xd
push 1
push edi
lea eax, [esp + 0x78]
mov ecx, ebx
push eax
call fcn.0040deb0
mov eax, dword [esp + 0xb8]
mov ecx, dword [ebx + 0x1b8]
not ecx
mov esi, dword [eax + 0x40]
mov edx, dword [eax + 0x44]
not esi
mov eax, dword [ebx + 0x1bc]
not edx
not eax
and esi, ecx
and esi, dword [esp + 0x70]
and edx, eax
and edx, dword [esp + 0x74]
push edx
push esi
call fcn.00406190
mov esi, eax
mov eax, dword [ebp]
add eax, dword [esi*4 + 0x4d00e8]
mov dword [esp + 0x44], eax
mov dword [ebp], eax
mov eax, dword [esi*4 + 0x4d0124]
add dword [ebp + 4], eax
cmp dword [esp + 0x54], 0xc
jle 0x4466a1
mov edx, dword [esp + 0x48]
and edx, 0x80000007
jns 0x446517
dec edx
or edx, 0xfffffff8
inc edx
inc edx
cmp esi, 5
jg 0x446608
mov eax, dword [esp + 0x58]
cmp dword [eax*8 + 0x4b6ddc], 1
jne 0x446608
cmp dword [esp + 0x34], 1
jne 0x446608
xor ecx, ecx
cmp dword [esp + 0x28], edx
setl cl
xor eax, eax
cmp edx, 5
setl al
cmp eax, ecx
jne 0x446608
mov edx, dword [esp + 0x24]
mov esi, dword [ebx + 0x1b8]
mov ecx, esi
mov edi, dword [ebx + 0x1bc]
not esi
mov eax, edi
not edi
and eax, dword [edx + 0x500c04]
and ecx, dword [edx + 0x500c00]
mov edx, dword [edx + 0x500c0c]
imul edx, eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x500c08]
imul eax, ecx
xor edx, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x500c14]
mov eax, dword [eax + 0x500c10]
shr edx, cl
mov ecx, dword [esp + 0x50]
and esi, dword [ecx + 0x4f1200]
and edi, dword [ecx + 0x4f1204]
and esi, dword [eax + edx*8]
and edi, dword [eax + edx*8 + 4]
mov eax, esi
xor edx, edx
or eax, edi
je 0x4465e4
mov ecx, esi
mov dword [esp + 0x20], edx
add ecx, 0xffffffff
mov eax, edi
adc eax, 0xffffffff
and esi, ecx
and edi, eax
inc edx
mov eax, esi
or eax, edi
jne 0x4465c4
cmp dword [esp + 0x20], 3
jge 0x446604
mov eax, dword [ebx + 0x120]
mov edi, dword [esp + 0x1c]
cmp dword [ebx + eax*4 + 0x140], 3
jl 0x446608
mov eax, dword [esp + 0x44]
add eax, 0xffffffb5
mov dword [ebp], eax
jmp 0x446608
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx*8 + 0x5d4a80]
and esi, dword [esp + 0x70]
mov edx, dword [ecx*8 + 0x5d4a84]
mov eax, esi
and edx, dword [esp + 0x74]
or eax, edx
mov dword [esp + 0x20], edx
je 0x4466a5
mov edx, dword [ecx*8 + 0x5d3580]
and edx, esi
mov esi, dword [ecx*8 + 0x5d3584]
and esi, dword [esp + 0x20]
mov eax, edx
xor ecx, ecx
or eax, esi
je 0x446674
mov ebp, ecx
nop
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
inc ebp
mov eax, edx
or eax, esi
jne 0x446650
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
xor eax, eax
dec ecx
test ecx, ecx
cmovle ecx, eax
lea eax, [ecx + ecx*4]
lea edx, [edx + eax*4]
mov eax, dword [esp + 0x40]
add eax, ecx
add edx, 0x33
mov dword [esp + 0x3c], edx
lea eax, [eax + ecx*2]
add eax, 5
inc dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x10]
push 0
push ecx
push edi
mov ecx, ebx
call fcn.0043ff40
mov edx, dword [esp + 0x18]
inc edx
test eax, eax
jmp 0x4462e7
mov eax, dword [edx*4 + 0x4d0170]
lea ebx, [edi + edi*2]
add eax, 0x61e
add dword [ebp], eax
mov eax, dword [edx*4 + 0x4d0270]
add eax, 0x5e3
add dword [ebp + 4], eax
mov eax, dword [esp + 0xb4]
mov edx, dword [ebx*8 + 0x5d120c]
mov ecx, dword [ebx*8 + 0x5d1200]
push 0
mov esi, dword [eax + 0x1b8]
and ecx, esi
mov edi, dword [eax + 0x1bc]
mov eax, dword [ebx*8 + 0x5d1204]
push dword [esp + 0x14]
and eax, edi
push dword [esp + 0x24]
imul edx, eax
mov eax, dword [ebx*8 + 0x5d1208]
imul eax, ecx
mov ecx, dword [ebx*8 + 0x5d1214]
xor edx, eax
mov eax, dword [ebx*8 + 0x5d1210]
shr edx, cl
mov ecx, dword [eax + edx*8]
mov dword [esp + 0x5c], ecx
mov ecx, dword [eax + edx*8 + 4]
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + edx*8]
mov edx, dword [eax + edx*8 + 4]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x34], edx
call fcn.00440050
mov ecx, dword [esp + 0x18]
mov edx, dword [ebx*8 + 0x500c0c]
inc ecx
test eax, eax
mov eax, dword [ebx*8 + 0x500c04]
cmove ecx, dword [esp + 0x4c]
and eax, edi
mov dword [esp + 0x18], ecx
mov ecx, dword [ebx*8 + 0x500c00]
imul edx, eax
and ecx, esi
mov eax, dword [ebx*8 + 0x500c08]
mov esi, dword [esp + 0xc4]
mov edi, dword [esp + 0x1c]
imul eax, ecx
mov ecx, dword [ebx*8 + 0x500c14]
xor edx, eax
mov eax, dword [ebx*8 + 0x500c10]
mov ebx, dword [esp + 0x44]
shr edx, cl
mov ecx, dword [eax + edx*8]
or ebx, ecx
mov eax, dword [eax + edx*8 + 4]
or dword [esi + 8], ebx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x28]
or ecx, eax
mov dword [esp + 0x20], eax
or dword [esi + 0xc], ecx
or dword [esi + 0x88], ebx
or dword [esi + 0x8c], ecx
or dword [esi + 0x68], ebx
or dword [esi + 0x6c], ecx
cmp dword [esp + 0x54], 0xc
mov dword [esp + 0x44], ebx
mov dword [esp + 0x28], ecx
jle 0x446a28
mov eax, edi
test eax, eax
jns 0x4467fe
add eax, 7
sar eax, 3
mov eax, dword [eax*8 + 0x4b6ddc]
mov ebx, dword [esp + 0xb4]
mov dword [esp + 0x14], eax
cmp eax, 3
jle 0x44685e
push dword [esp + 0x5c]
lea eax, [esp + 0x94]
push eax
lea ecx, [ebx + 0x170]
call fcn.00406160
mov ecx, dword [0x4f123c]
mov edx, dword [0x4f1238]
and ecx, dword [eax + 4]
and edx, dword [eax]
push ecx
push edx
call fcn.00406190
mov ecx, eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffffc
cdq
sub eax, edx
sar eax, 1
add eax, 0x1b
imul ecx, eax
sub dword [ebp], ecx
mov eax, dword [esp + 0x10]
mov ecx, dword [eax*8 + 0x5d4a80]
mov eax, dword [eax*8 + 0x5d4a84]
mov edx, eax
and edx, dword [esp + 0x34]
mov dword [esp + 0x14], ecx
and ecx, dword [esp + 0x50]
mov dword [esp + 0x30], eax
mov eax, ecx
or eax, edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edx
jne 0x446910
lea eax, [ebx + 0x1a0]
push eax
lea eax, [esp + 0x9c]
push eax
lea ecx, [ebx + 0x180]
call fcn.00406160
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x34]
and ecx, dword [eax]
and edx, dword [eax + 4]
or ecx, edx
jne 0x4468d1
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x24]
jmp 0x446910
push 1
push edi
lea eax, [esp + 0xa8]
mov ecx, ebx
push eax
call fcn.0040df90
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx*8 + 0x5d4a80]
mov ecx, dword [ecx*8 + 0x5d4a84]
mov dword [esp + 0x30], ecx
mov ecx, edx
and ecx, dword [eax]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x30]
and edx, dword [eax + 4]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x4c]
and ebp, eax
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x20]
and ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x50], ebp
or eax, ebp
mov ebp, dword [esp + 0xc8]
je 0x446947
or ecx, dword [esp + 0x34]
or edx, dword [esp + 0x50]
mov dword [esp + 0x1c], edx
jmp 0x4469b7
lea eax, [ebx + 0x190]
push eax
lea eax, [esp + 0xac]
push eax
lea ecx, [ebx + 0x1a0]
call fcn.00406160
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x20]
and ecx, dword [eax]
and edx, dword [eax + 4]
or ecx, edx
je 0x4469af
push 1
push edi
lea eax, [esp + 0x80]
mov ecx, ebx
push eax
call fcn.0040deb0
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax]
and ecx, dword [ebx*8 + 0x5d4a80]
mov eax, dword [eax + 4]
and eax, dword [ebx*8 + 0x5d4a84]
or dword [esp + 0x24], ecx
or edx, eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
jmp 0x4469bb
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
mov eax, ecx
or eax, edx
je 0x446a28
mov edx, dword [ebx*8 + 0x5d3580]
mov esi, dword [ebx*8 + 0x5d3584]
and edx, ecx
and esi, dword [esp + 0x1c]
mov eax, edx
xor ebx, ebx
or eax, esi
je 0x4469f5
nop dword [eax]
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
inc ebx
mov eax, edx
or eax, esi
jne 0x4469e0
mov edx, dword [esp + 0x3c]
lea ecx, [ebx - 1]
mov esi, dword [esp + 0xc4]
xor eax, eax
test ecx, ecx
cmovle ecx, eax
add edx, 0x39
imul eax, ecx, 0x27
add edx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x3c], edx
lea eax, [eax + ecx*4]
add eax, 6
inc dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xb8]
mov ebx, dword [esp + 0xb4]
mov ecx, dword [eax + 0x40]
mov eax, dword [eax + 0x44]
or eax, dword [ebx + 0x1bc]
or ecx, dword [ebx + 0x1b8]
not eax
and eax, dword [esp + 0x28]
not ecx
and ecx, dword [esp + 0x44]
push eax
push ecx
call fcn.00406190
mov ecx, 0x17
cmp eax, ecx
push 0
push dword [esp + 0x14]
cmovl ecx, eax
push edi
mov eax, dword [ecx*4 + 0x4d0018]
add dword [ebp], eax
mov eax, dword [ecx*4 + 0x4d0078]
mov ecx, ebx
add dword [ebp + 4], eax
call fcn.0043ff40
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
test eax, eax
je 0x445e59
inc edx
mov dword [esp + 0x18], edx
jmp 0x445e59
mov ecx, dword [ebx + 0x114]
mov eax, ecx
and eax, 0xf00
cmp eax, 0x100
jne 0x446b83
mov ecx, dword [0x4f0358]
mov eax, dword [0x4f035c]
and ecx, dword [ebx + 0x180]
and eax, dword [ebx + 0x184]
or ecx, eax
mov dword [esp + 0x20], 1
jne 0x446ae8
mov dword [esp + 0x20], 0
cmp dword [esp + 0x20], 0
mov eax, dword [esp + 0xb8]
mov ecx, dword [eax + 0x5c]
mov edx, dword [eax + 0x60]
lea eax, [edx + ecx]
je 0x446b41
cmp eax, 4
jle 0x446b1d
lea eax, [edx + 2]
cmp ecx, eax
jle 0x446b1d
sub edx, ecx
lea eax, [edx + edx*4]
add dword [ebp], eax
lea eax, [edx*4]
add dword [ebp + 4], eax
mov ecx, dword [esp + 0xb8]
mov eax, dword [ecx + 0x2c]
mov ecx, dword [ecx + 0x30]
add ecx, eax
je 0x446b99
neg eax
add eax, eax
cdq
idiv ecx
mov edx, dword [esp + 0xcc]
add dword [edx + 4], eax
jmp 0x446b99
cmp eax, 4
jle 0x446b5f
lea eax, [ecx + 2]
cmp edx, eax
jle 0x446b5f
sub ecx, edx
lea eax, [ecx + ecx*4]
add dword [ebp], eax
lea eax, [ecx*4]
add dword [ebp + 4], eax
mov ecx, dword [esp + 0xb8]
mov eax, dword [ecx + 0x30]
mov ecx, dword [ecx + 0x2c]
add ecx, eax
je 0x446b99
neg eax
add eax, eax
cdq
idiv ecx
mov ecx, dword [esp + 0xcc]
add dword [ecx + 4], eax
jmp 0x446b99
and ecx, 0xf00
cmp ecx, 0x200
jb 0x446b99
add dword [ebp], 0x2a
add dword [ebp + 4], 0x45
mov edx, dword [esp + 0x48]
mov ecx, 0x4cf644
lea eax, [edx*4]
sub ecx, eax
mov eax, dword [ecx]
add dword [ebp], eax
mov eax, dword [edx*8 + 0x4f2000]
or dword [esi + 8], eax
mov eax, dword [edx*8 + 0x4f2004]
or dword [esi + 0xc], eax
mov ecx, dword [edx*8 + 0x4f2000]
mov eax, dword [edx*8 + 0x4f2004]
and ecx, dword [esi + 8]
and eax, dword [esi + 0xc]
or dword [esi + 0x88], ecx
or dword [esi + 0x8c], eax
cmp dword [esp + 0x60], 0x17
jg 0x446c31
mov eax, dword [ebx + 0x1bc]
or eax, dword [esi + 0xc]
mov ecx, dword [ebx + 0x1b8]
not eax
or ecx, dword [esi + 8]
and eax, dword [edi*8 + 0x4f2004]
not ecx
and ecx, dword [edi*8 + 0x4f2000]
push eax
push ecx
call fcn.00406190
mov ecx, 4
cmp eax, ecx
cmovl ecx, eax
mov eax, dword [ecx*4 + 0x4cf458]
mov ecx, dword [esp + 0xcc]
add dword [ecx + 4], eax
cmp dword [esp + 0x54], 0xc
jle 0x446e92
mov ebx, dword [edi*8 + 0x5d3580]
mov eax, dword [esi + 0xc]
mov edi, dword [edi*8 + 0x5d3584]
and eax, edi
mov ecx, dword [esi + 8]
and ecx, ebx
push eax
push ecx
call fcn.00406190
push edi
push ebx
lea esi, [eax*8]
sub esi, eax
shl esi, 3
call fcn.00406190
mov ecx, eax
xor edx, edx
mov eax, esi
div ecx
mov ecx, eax
imul eax, dword [esp + 0x64], 0x77
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
sub ecx, eax
mov eax, dword [esp + 0x38]
lea eax, [eax + eax*2]
add ecx, eax
mov eax, dword [esp + 0xc0]
add ecx, dword [eax + 0x10]
add ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x3c]
add eax, 4
add eax, ecx
cdq
and edx, 3
lea ebx, [edx + eax]
xor eax, eax
sar ebx, 2
test ebx, ebx
cmovle ebx, eax
mov eax, dword [esp + 0x40]
cdq
sub eax, edx
mov dword [esp + 0x58], ebx
sar eax, 1
mov dword [esp + 0x5c], eax
cmp eax, 4
jl 0x446e69
mov ebx, dword [esp + 0xb4]
lea eax, [esp + 0x78]
lea ecx, [ebx + 0x178]
push ecx
push eax
lea ecx, [ebx + 0x168]
call fcn.00406160
mov ecx, dword [esp + 0x10]
xor edi, edi
mov dword [esp + 0x48], edi
mov edx, dword [ecx*8 + 0x5d4a80]
mov ecx, dword [ecx*8 + 0x5d4a84]
mov esi, ecx
and esi, dword [eax + 4]
mov dword [esp + 0x60], edx
and edx, dword [eax]
mov eax, edx
mov dword [esp + 0x64], ecx
or eax, esi
je 0x446d3d
nop dword [eax]
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
inc edi
mov eax, edx
or eax, esi
jne 0x446d20
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x48], edi
cmp edi, 2
jle 0x446d50
lea eax, [edi - 2]
cdq
sub eax, edx
sar eax, 1
sub edi, eax
mov dword [esp + 0x48], edi
mov edx, dword [ebx + 0x188]
and edx, dword [esp + 0x60]
mov esi, dword [ebx + 0x18c]
mov eax, edx
and esi, ecx
mov dword [esp + 0x34], 0
or eax, esi
je 0x446d8b
xor ebp, ebp
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
inc ebp
mov eax, edx
or eax, esi
jne 0x446d72
mov dword [esp + 0x34], ebp
mov ebp, dword [ebx + 0x198]
xor esi, esi
mov ebx, dword [ebx + 0x19c]
mov edi, dword [esp + 0x10]
mov eax, ebp
mov dword [esp + 0x20], esi
or eax, ebx
je 0x446e23
bsf esi, ebp
jne 0x446dbb
bsf esi, ebx
je 0x446db6
add esi, 0x20
jmp 0x446dbb
mov esi, 0x7f
mov eax, dword [esi*8 + 0x4b6a84]
mov ecx, dword [esi*8 + 0x4b6a80]
not eax
and ebx, eax
not ecx
mov eax, esi
and ebp, ecx
cdq
and edx, 7
lea ecx, [edx + eax]
mov eax, dword [esp + 0x6c]
sar ecx, 3
sub eax, ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
and esi, 0x80000007
jns 0x446df7
dec esi
or esi, 0xfffffff8
inc esi
mov eax, edi
and eax, 0x80000007
jns 0x446e05
dec eax
or eax, 0xfffffff8
inc eax
sub eax, esi
mov esi, dword [esp + 0x20]
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
cmovge eax, ecx
mov ecx, 4
sub ecx, eax
add esi, ecx
jmp 0x446d9d
mov edx, 0xf
mov ebp, dword [esp + 0xc8]
cmp dword [esp + 0x5c], edx
mov ebx, dword [esp + 0x58]
cmovl edx, dword [esp + 0x5c]
imul ecx, dword [esp + 0x48], 0x45
imul eax, esi, 0xd
add eax, ecx
imul ecx, dword [esp + 0x34], 0x1b
add eax, ecx
mov ecx, dword [esp + 0xcc]
imul eax, dword [edx*4 + 0x4d0600]
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
add dword [ecx], eax
jmp 0x446e70
mov ecx, dword [esp + 0xcc]
mov esi, dword [esp + 0x18]
mov eax, 0x95
cmp ebx, eax
cmovl eax, ebx
mov edx, dword [eax*4 + 0x4d03a8]
test esi, esi
je 0x446e8e
imul eax, esi, 0x5b
add edx, eax
sub dword [ecx], edx
jmp 0x446e96
mov esi, dword [esp + 0x18]
test esi, esi
je 0x446ea6
mov eax, esi
shl eax, 5
sub eax, esi
add eax, eax
add dword [ebp + 4], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa0
ret 0x1c