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

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0xa0
cmp dword [eax + 0x34], 0
push ebx
push ebp
mov ebp, dword [esp + 0xc0]
push esi
push edi
je 0x444ae9
cmp dword [eax + 0x64], 0
jne 0x444ae9
add dword [ebp], 0xe
add dword [ebp + 4], 0x20
mov ebx, dword [esp + 0xb4]
mov edx, 0x5d4798
lea esi, [ebx + 0x178]
mov dword [esp + 0x60], 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 0x444b2b
mov ecx, dword [ebx + 0x160]
mov eax, dword [ebx + 0x164]
and ecx, dword [edx]
and eax, dword [edx + 4]
or ecx, eax
je 0x444b2b
add dword [ebp + 8], 0xffffff44
add edx, 0x10
cmp edx, 0x5d47d8
jl 0x444b00
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 + 0x100]
mov dword [esp + 0x50], eax
mov edi, dword [ebx + 0x104]
mov dword [esp + 0x10], edi
mov ecx, dword [eax*8 + 0x4b6a80]
mov eax, dword [eax*8 + 0x4b6a84]
or eax, dword [ebx + 0x15c]
or ecx, dword [ebx + 0x158]
not eax
and eax, dword [ebx + 0x1ac]
not ecx
and ecx, dword [ebx + 0x1a8]
mov dword [esp + 0x38], eax
mov eax, dword [ebx + 0x10c]
mov edx, eax
cmp eax, esi
mov dword [esp + 0x30], ecx
cmova eax, esi
cmova edx, esi
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x64], edx
xor edx, edx
mov eax, dword [eax + 8]
cmp eax, 0xffff82ff
cmovne edx, eax
xor esi, esi
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x18], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov eax, dword [edx + 0x40]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0xc4]
mov dword [esi + 0x10], eax
mov eax, dword [edx + 0x44]
mov dword [esi + 0x14], eax
mov eax, dword [edx + 0x40]
or dword [esi], eax
mov eax, dword [edx + 0x44]
or dword [esi + 4], eax
mov eax, edi
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x50]
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [esp + 0x5c], eax
xor eax, eax
jmp 0x444c3e
mov esi, dword [esp + 0xc4]
mov eax, dword [esp + 0x18]
jmp 0x444c42
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
jmp 0x444c42
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x54], eax
mov eax, ecx
or eax, edx
je 0x4458be
bsf edi, ecx
mov dword [esp + 0x1c], edi
jne 0x444c6c
bsf edi, edx
je 0x444c63
add edi, 0x20
jmp 0x444c68
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 + 0x30], ecx
and eax, 7
mov ecx, dword [esp + 0x30]
add eax, 0xfffffffe
mov dword [esp + 0x38], edx
cmp eax, 3
ja case.default.0x444c9a
jmp dword [eax*4 + 0x445cc4]
mov ecx, dword [edi*4 + 0x4cfa78]
lea edx, [edi*8 + 0x4f0980]
mov eax, dword [ebp]
add ecx, 0x1f8
mov esi, dword [esp + 0xb8]
add eax, ecx
mov ecx, dword [edi*4 + 0x4cfb78]
mov dword [ebp], eax
add ecx, 0x1e3
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 4]
add eax, ecx
mov dword [esp + 0x4c], edx
mov dword [ebp + 4], eax
mov ecx, dword [ebx + 0x1b8]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xb8]
or ecx, dword [eax + 0x10]
mov eax, dword [ebx + 0x1bc]
not ecx
or eax, dword [esi + 0x14]
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 0x444d21
add eax, 7
sar eax, 3
cmp dword [eax*8 + 0x4b6dd8], 4
mov esi, dword [esp + 0xc4]
jle 0x444dc2
mov ecx, dword [edi*8 + 0x5d3300]
mov eax, dword [edi*8 + 0x5d3304]
and ecx, dword [ebx + 0x160]
and eax, dword [ebx + 0x164]
or ecx, eax
jne 0x444dc2
shl edi, 4
mov edx, dword [edi + 0x4eff00]
and edx, dword [ebx + 0x158]
mov esi, dword [edi + 0x4eff04]
mov eax, edx
and esi, dword [ebx + 0x15c]
xor edi, edi
or eax, esi
je 0x444d9f
nop word [eax + 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 0x444d80
cmp edi, 1
jl 0x444d9f
mov edi, 1
mov eax, dword [edi*4 + 0x4cfca0]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0xc4]
mov dword [ebp], eax
mov eax, dword [edi*4 + 0x4cfca8]
add eax, dword [esp + 0x2c]
mov dword [ebp + 4], eax
mov edx, dword [esp + 0x4c]
mov edi, dword [esp + 0x10]
mov eax, dword [edx]
or dword [esi], eax
mov eax, dword [edx + 4]
or dword [esi + 4], eax
mov eax, dword [edx]
or dword [esi + 0x20], eax
mov eax, dword [edx + 4]
or dword [esi + 0x24], eax
mov eax, dword [edx]
or dword [esi + 0x40], eax
mov eax, dword [edx + 4]
or dword [esi + 0x44], eax
mov ecx, dword [edx]
mov eax, dword [edx + 4]
and ecx, dword [esi]
and eax, dword [esi + 4]
or dword [esi + 0x80], ecx
or dword [esi + 0x84], eax
cmp dword [esp + 0x58], 0xc
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x18]
jle 0x444c3e
mov esi, dword [edi*8 + 0x5d4c80]
and esi, dword [edx]
mov eax, dword [edi*8 + 0x5d4c84]
mov ecx, esi
and eax, dword [edx + 4]
mov edx, dword [esp + 0x38]
or ecx, eax
mov ecx, dword [esp + 0x30]
je 0x444c23
xor edi, edi
nop word [eax + eax]
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 0x444e40
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0xc4]
add ecx, 0x17
imul eax, edi, 0x15
add ecx, eax
lea eax, [edi - 1]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
xor ecx, ecx
test eax, eax
cmovle eax, ecx
mov ecx, dword [esp + 0x44]
lea ecx, [ecx + eax*2]
mov eax, dword [esp + 0x18]
add ecx, 4
inc dword [esp + 0x3c]
mov dword [esp + 0x44], ecx
jmp 0x444c3a
mov eax, dword [edi*4 + 0x4cf878]
lea esi, [edi + edi*2]
add eax, 0x207
add dword [ebp], eax
mov eax, dword [edi*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 + 0x34], eax
mov dword [esp + 0x28], esi
or dword [edx + 4], eax
or dword [edx], esi
or dword [edx + 0x34], eax
or dword [edx + 0x30], esi
or dword [edx + 0x44], eax
or dword [edx + 0x40], esi
mov ecx, dword [edx]
mov eax, dword [edx + 4]
and ecx, esi
and eax, dword [esp + 0x34]
or dword [edx + 0x80], ecx
or dword [edx + 0x84], eax
cmp dword [esp + 0x58], 0xc
jle 0x445002
mov eax, dword [esp + 0x10]
mov edx, dword [eax*8 + 0x5d4c80]
and edx, esi
mov esi, dword [eax*8 + 0x5d4c84]
and esi, dword [esp + 0x34]
mov eax, edx
or eax, esi
jne 0x444fa8
mov ecx, dword [ebx + 0x198]
mov eax, dword [ebx + 0x19c]
and ecx, dword [esp + 0x28]
and eax, dword [esp + 0x34]
or ecx, eax
je 0x445002
push 0
push edi
lea eax, [esp + 0x88]
mov ecx, ebx
push eax
call fcn.0040df90
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx*8 + 0x5d4c80]
and edx, dword [eax]
mov esi, dword [ecx*8 + 0x5d4c84]
and esi, dword [eax + 4]
mov eax, edx
or eax, esi
je 0x445002
mov eax, edx
xor ecx, ecx
or eax, esi
je 0x444fd6
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 0x444fb2
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
imul eax, ecx, 0x15
add edx, 0x17
add edx, eax
lea eax, [ecx - 1]
xor ecx, ecx
mov dword [esp + 0x40], edx
test eax, eax
cmovle eax, ecx
mov ecx, dword [esp + 0x44]
lea ecx, [ecx + eax*2]
add ecx, 4
inc dword [esp + 0x3c]
mov dword [esp + 0x44], ecx
mov eax, edi
test eax, eax
jns 0x44500b
add eax, 7
sar eax, 3
cmp dword [eax*8 + 0x4b6dd8], 4
jle 0x4450a2
mov ecx, dword [edi*8 + 0x5d3300]
mov eax, dword [edi*8 + 0x5d3304]
and ecx, dword [ebx + 0x160]
and eax, dword [ebx + 0x164]
or ecx, eax
jne 0x4450a2
mov eax, edi
shl eax, 4
mov edx, dword [eax + 0x4eff00]
mov esi, dword [eax + 0x4eff04]
and edx, dword [ebx + 0x158]
and esi, dword [ebx + 0x15c]
mov eax, edx
or eax, esi
je 0x44508e
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 0x445060
mov dword [esp + 0x14], ebp
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0xc8]
cmp ecx, 1
jl 0x44508e
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 1
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 + 0x10]
mov edx, dword [eax + 0x14]
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 + 0x34]
push edx
push esi
call fcn.00406190
mov esi, dword [esp + 0xc4]
mov eax, dword [eax*4 + 0x4cffc8]
add dword [ebp + 8], eax
mov eax, dword [esp + 0x18]
inc eax
test edi, edi
mov edi, dword [esp + 0x10]
cmove eax, dword [esp + 0x54]
mov dword [esp + 0x18], eax
jmp 0x444c3a
mov ecx, dword [edi*4 + 0x4cfcf0]
lea edx, [edi + edi*2]
mov eax, dword [ebp]
add ecx, 0x2f8
add eax, ecx
shl edx, 3
mov ecx, dword [edi*4 + 0x4cfdf0]
mov dword [ebp], eax
add ecx, 0x31a
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 4]
add eax, ecx
mov dword [esp + 0x24], edx
mov dword [ebp + 4], eax
mov ecx, dword [ebx + 0x1b8]
and ecx, dword [edx + 0x500c00]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x1bc]
and eax, dword [edx + 0x500c04]
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 [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 + 0x48], ecx
add eax, edx
and eax, 0xfffffff8
mov dword [esp + 0x4c], eax
mov eax, dword [eax + 0x4b6dd8]
mov dword [esp + 0x2c], eax
cmp eax, 7
jne 0x44522d
mov eax, dword [esp + 0x6c]
cmp dword [eax*8 + 0x4b6dd8], 8
je 0x4451e5
mov ecx, dword [ebx + 0x160]
mov eax, dword [ebx + 0x164]
and ecx, dword [0x4f1d80]
and eax, dword [0x4f1d84]
or ecx, eax
je 0x44522d
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 + 0x188]
and eax, dword [ebx + 0x18c]
and ecx, dword [esp + 0x48]
and eax, edx
or ecx, eax
je 0x445231
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 0x445231
mov edx, dword [esp + 0x14]
mov eax, edi
and eax, 0x80000007
jns 0x44523f
dec eax
or eax, 0xfffffff8
inc eax
or dword [esi + 4], edx
inc eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x48]
or dword [esi], eax
or dword [esi + 0x50], eax
or dword [esi + 0x54], edx
mov ecx, dword [esi]
and ecx, eax
mov eax, dword [esi + 4]
or dword [esi + 0x80], ecx
and eax, edx
or dword [esi + 0x84], 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 0x4452a5
add dword [ebp], 0x1c
add dword [ebp + 4], 0xd
push 0
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 + 0x10]
mov edx, dword [eax + 0x14]
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 + 0x48], eax
mov dword [ebp], eax
mov eax, dword [esi*4 + 0x4d0124]
add dword [ebp + 4], eax
cmp dword [esp + 0x58], 0xc
jle 0x4454a7
mov edx, dword [esp + 0x50]
and edx, 0x80000007
jns 0x445321
dec edx
or edx, 0xfffffff8
inc edx
inc edx
cmp esi, 5
jg 0x445414
mov eax, dword [esp + 0x5c]
cmp dword [eax*8 + 0x4b6dd8], 1
jne 0x445414
cmp dword [esp + 0x2c], 1
jne 0x445414
xor ecx, ecx
cmp dword [esp + 0x28], edx
setl cl
xor eax, eax
cmp edx, 5
setl al
cmp eax, ecx
jne 0x445414
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 + 0x4c]
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 0x4453f0
nop
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 0x4453d0
cmp dword [esp + 0x20], 3
jge 0x445410
mov eax, dword [ebx + 0x120]
mov edi, dword [esp + 0x1c]
cmp dword [ebx + eax*4 + 0x140], 3
jl 0x445414
mov eax, dword [esp + 0x48]
add eax, 0xffffffb5
mov dword [ebp], eax
jmp 0x445414
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx*8 + 0x5d4c80]
and esi, dword [esp + 0x70]
mov edx, dword [ecx*8 + 0x5d4c84]
mov eax, esi
and edx, dword [esp + 0x74]
or eax, edx
mov dword [esp + 0x20], edx
je 0x4454ab
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 0x44547a
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 0x445456
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
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 + 0x44]
add eax, ecx
add edx, 0x33
mov dword [esp + 0x40], edx
lea eax, [eax + ecx*2]
add eax, 5
inc dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x10]
push 1
push ecx
push edi
mov ecx, ebx
call fcn.0043ff40
inc dword [esp + 0x18]
test eax, eax
mov eax, dword [esp + 0x18]
cmove eax, dword [esp + 0x54]
mov esi, dword [esp + 0xc4]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], eax
jmp 0x444c3a
mov eax, dword [edi*4 + 0x4d0170]
lea ebx, [edi + edi*2]
add eax, 0x61e
add dword [ebp], eax
mov eax, dword [edi*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 1
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 + 0x58], ecx
mov ecx, dword [eax + edx*8 + 4]
mov dword [esp + 0x38], ecx
mov ecx, dword [eax + edx*8]
mov edx, dword [eax + edx*8 + 4]
mov dword [esp + 0x54], 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 + 0x54]
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 + 0x48]
shr edx, cl
mov ecx, dword [eax + edx*8]
or ebx, ecx
mov eax, dword [eax + edx*8 + 4]
or dword [esi], ebx
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x28]
or ecx, eax
mov dword [esp + 0x20], eax
or dword [esi + 4], ecx
or dword [esi + 0x80], ebx
or dword [esi + 0x84], ecx
or dword [esi + 0x60], ebx
or dword [esi + 0x64], ecx
cmp dword [esp + 0x58], 0xc
mov dword [esp + 0x48], ebx
mov dword [esp + 0x28], ecx
jle 0x44583d
mov eax, edi
test eax, eax
jns 0x44561a
add eax, 7
sar eax, 3
mov eax, dword [eax*8 + 0x4b6dd8]
mov ebx, dword [esp + 0xb4]
mov dword [esp + 0x14], eax
cmp eax, 3
jle 0x44567a
push dword [esp + 0x60]
lea eax, [esp + 0x94]
push eax
lea ecx, [ebx + 0x168]
call fcn.00406160
mov ecx, dword [0x4f1204]
mov edx, dword [0x4f1200]
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 + 0x5d4c80]
mov eax, dword [eax*8 + 0x5d4c84]
mov edx, eax
and edx, dword [esp + 0x2c]
mov dword [esp + 0x14], ecx
and ecx, dword [esp + 0x4c]
mov dword [esp + 0x34], eax
mov eax, ecx
or eax, edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edx
jne 0x445728
lea eax, [ebx + 0x198]
push eax
lea eax, [esp + 0x9c]
push eax
lea ecx, [ebx + 0x178]
call fcn.00406160
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x2c]
and ecx, dword [eax]
and edx, dword [eax + 4]
or ecx, edx
jne 0x4456e9
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x24]
jmp 0x445728
push 0
push edi
lea eax, [esp + 0xa8]
mov ecx, ebx
push eax
call fcn.0040df90
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx*8 + 0x5d4c80]
mov ecx, dword [ecx*8 + 0x5d4c84]
mov dword [esp + 0x34], ecx
mov ecx, edx
and ecx, dword [eax]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x34]
and edx, dword [eax + 4]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x54]
and ebp, eax
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x20]
and ebp, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x4c], ebp
or eax, ebp
mov ebp, dword [esp + 0xc8]
je 0x44575f
or ecx, dword [esp + 0x2c]
or edx, dword [esp + 0x4c]
mov dword [esp + 0x1c], edx
jmp 0x4457cf
lea eax, [ebx + 0x188]
push eax
lea eax, [esp + 0xac]
push eax
lea ecx, [ebx + 0x198]
call fcn.00406160
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x20]
and ecx, dword [eax]
and edx, dword [eax + 4]
or ecx, edx
je 0x4457c7
push 0
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 + 0x5d4c80]
mov eax, dword [eax + 4]
and eax, dword [ebx*8 + 0x5d4c84]
or dword [esp + 0x24], ecx
or edx, eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
jmp 0x4457d3
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
mov eax, ecx
or eax, edx
je 0x44583d
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 0x44580a
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 0x4457f5
mov edx, dword [esp + 0x40]
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 + 0x44]
mov dword [esp + 0x40], edx
lea eax, [eax + ecx*4]
add eax, 6
inc dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb8]
mov ebx, dword [esp + 0xb4]
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
or eax, dword [ebx + 0x1bc]
or ecx, dword [ebx + 0x1b8]
not eax
and eax, dword [esp + 0x28]
not ecx
and ecx, dword [esp + 0x48]
push eax
push ecx
call fcn.00406190
mov ecx, 0x17
cmp eax, ecx
push 1
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]
test eax, eax
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
je 0x444c42
inc eax
mov dword [esp + 0x18], eax
jmp 0x444c3a
mov ecx, dword [ebx + 0x108]
mov eax, ecx
and eax, 0xf00
cmp eax, 0x100
jne 0x44599c
mov ecx, dword [0x4f0358]
mov eax, dword [0x4f035c]
and ecx, dword [ebx + 0x178]
and eax, dword [ebx + 0x17c]
or ecx, eax
mov dword [esp + 0x20], 1
jne 0x445901
mov dword [esp + 0x20], 0
cmp dword [esp + 0x20], 0
mov eax, dword [esp + 0xb8]
mov ecx, dword [eax + 0x2c]
mov edx, dword [eax + 0x30]
lea eax, [edx + ecx]
je 0x44595a
cmp eax, 4
jle 0x445936
lea eax, [edx + 2]
cmp ecx, eax
jle 0x445936
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 + 0x5c]
mov ecx, dword [ecx + 0x60]
add ecx, eax
je 0x4459b2
neg eax
add eax, eax
cdq
idiv ecx
mov edx, dword [esp + 0xcc]
add dword [edx + 4], eax
jmp 0x4459b2
cmp eax, 4
jle 0x445978
lea eax, [ecx + 2]
cmp edx, eax
jle 0x445978
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 + 0x60]
mov ecx, dword [ecx + 0x5c]
add ecx, eax
je 0x4459b2
neg eax
add eax, eax
cdq
idiv ecx
mov ecx, dword [esp + 0xcc]
add dword [ecx + 4], eax
jmp 0x4459b2
and ecx, 0xf00
cmp ecx, 0x200
jb 0x4459b2
add dword [ebp], 0x2a
add dword [ebp + 4], 0x45
mov edx, dword [esp + 0x50]
mov eax, dword [edx*4 + 0x4cf548]
add dword [ebp], eax
mov eax, dword [edx*8 + 0x4f2000]
or dword [esi], eax
mov eax, dword [edx*8 + 0x4f2004]
or dword [esi + 4], eax
mov ecx, dword [esi]
mov eax, dword [esi + 4]
and ecx, dword [edx*8 + 0x4f2000]
and eax, dword [edx*8 + 0x4f2004]
or dword [esi + 0x80], ecx
or dword [esi + 0x84], eax
cmp dword [esp + 0x64], 0x17
jg 0x445a3e
mov eax, dword [ebx + 0x1bc]
or eax, dword [esi + 4]
mov ecx, dword [ebx + 0x1b8]
not eax
or ecx, dword [esi]
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 + 0x58], 0xc
jle 0x445ca2
mov ebx, dword [edi*8 + 0x5d3580]
mov eax, dword [esi + 4]
mov edi, dword [edi*8 + 0x5d3584]
and eax, edi
mov ecx, dword [esi]
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 + 0x68], 0x77
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
sub ecx, eax
mov eax, dword [esp + 0x3c]
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 + 0x40]
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 + 0x44]
cdq
sub eax, edx
mov dword [esp + 0x5c], ebx
sar eax, 1
mov dword [esp + 0x60], eax
cmp eax, 4
jl 0x445c79
mov ebx, dword [esp + 0xb4]
lea eax, [esp + 0x78]
lea ecx, [ebx + 0x180]
push ecx
push eax
lea ecx, [ebx + 0x170]
call fcn.00406160
mov ecx, dword [esp + 0x10]
xor edi, edi
mov dword [esp + 0x50], edi
mov edx, dword [ecx*8 + 0x5d4c80]
mov ecx, dword [ecx*8 + 0x5d4c84]
mov esi, ecx
and esi, dword [eax + 4]
mov dword [esp + 0x64], edx
and edx, dword [eax]
mov eax, edx
mov dword [esp + 0x68], ecx
or eax, esi
je 0x445b4d
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 0x445b30
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x50], edi
cmp edi, 2
jle 0x445b60
lea eax, [edi - 2]
cdq
sub eax, edx
sar eax, 1
sub edi, eax
mov dword [esp + 0x50], edi
mov edx, dword [ebx + 0x190]
and edx, dword [esp + 0x64]
mov esi, dword [ebx + 0x194]
mov eax, edx
and esi, ecx
mov dword [esp + 0x2c], 0
or eax, esi
je 0x445b9b
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 0x445b82
mov dword [esp + 0x2c], ebp
mov ebp, dword [ebx + 0x1a0]
xor esi, esi
mov ebx, dword [ebx + 0x1a4]
mov edi, dword [esp + 0x10]
mov eax, ebp
mov dword [esp + 0x20], esi
or eax, ebx
je 0x445c33
bsf esi, ebp
jne 0x445bcb
bsf esi, ebx
je 0x445bc6
add esi, 0x20
jmp 0x445bcb
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 0x445c07
dec esi
or esi, 0xfffffff8
inc esi
mov eax, edi
and eax, 0x80000007
jns 0x445c15
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 0x445bad
mov edx, 0xf
mov ebp, dword [esp + 0xc8]
cmp dword [esp + 0x60], edx
mov ebx, dword [esp + 0x5c]
cmovl edx, dword [esp + 0x60]
imul ecx, dword [esp + 0x50], 0x45
imul eax, esi, 0xd
add eax, ecx
imul ecx, dword [esp + 0x2c], 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 0x445c80
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 0x445c9e
imul eax, esi, 0x5b
add edx, eax
sub dword [ecx], edx
jmp 0x445ca6
mov esi, dword [esp + 0x18]
test esi, esi
je 0x445cb6
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