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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x44]
cmp eax, dword [ecx + 8]
jbe 0x445640
sub esp, 0xc4
mov ecx, dword [esp + 0xc8]
test byte [ecx], al
mov edx, dword [esp + 0xcc]
test byte [edx], al
mov ebx, dword [0xe993d0]
test ebx, ebx
seta bl
mov byte [esp + 0x1d], bl
mov ebp, dword [0xe993d4]
test ebp, ebp
xchg ebp, ebx
sete bl
xchg ebp, ebx
xchg esi, ebx
seta bl
xchg esi, ebx
mov eax, ecx
mov ecx, dword [esp + 0xd4]
mov edi, esi
mov esi, dword [esp + 0xd8]
lea ebx, [esi + ecx]
mov dword [esp + 0x30], ebx
lea esi, [esi + ecx - 0x20000]
xchg esi, ebx
neg ebx
xchg esi, ebx
xchg esi, ebx
neg ebx
xchg esi, ebx
shl ebx, 1
sar esi, 0x1f
and esi, ebx
mov dword [esp + 0x58], esi
lea ebx, [edx + esi]
mov dword [esp + 0x80], ebx
movzx ecx, byte [esp + 0x1d]
and ebp, ecx
or ebp, edi
xchg ebp, eax
test al, al
xchg ebp, eax
jne 0x4445cd
xor ecx, ecx
xor ebp, ebp
jmp 0x4445f4
call fcn.0045ee30
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xcc]
mov ebx, dword [esp + 0x80]
mov esi, dword [esp + 0x58]
mov ebp, eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], ecx
mov edi, dword [esp + 0x30]
mov dword [esp + 0x64], eax
xor eax, eax
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x64]
jmp 0x44462b
inc ecx
mov esi, dword [esp + 0x58]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x2c], ebp
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
cmp ecx, edi
jge 0x444707
lea ebp, [eax + ecx*8]
mov ebp, dword [ebp]
test ebp, ebp
je 0x4446d3
mov ebp, dword fs:[0x14]
mov ebp, dword [ebp]
mov ebp, dword [ebp + 0x18]
mov esi, dword [esp + 0x2c]
lea ebx, [esi + 1]
mov ecx, dword [ebp + 0x94]
mov dword [esp + 0x28], ecx
mov esi, dword [ebp + 0x98]
shl ecx, 0x11
mov edx, dword [esp + 0x28]
xor ecx, edx
mov edx, esi
xor esi, ecx
shr ecx, 7
xor ecx, esi
mov esi, edx
shr edx, 0x10
xor edx, ecx
lea ecx, [esi + edx]
mov eax, ecx
mov ecx, edx
mul ebx
mov dword [ebp + 0x94], esi
mov dword [ebp + 0x98], ecx
mov ecx, dword [esp + 0xcc]
movzx ebp, word [ecx + edx*2]
mov esi, dword [esp + 0x2c]
mov word [ecx + esi*2], bp
mov ebp, dword [esp + 0x40]
mov word [ecx + edx*2], bp
mov eax, dword [esp + 0xc8]
mov ecx, ebp
mov edx, dword [esp + 0xcc]
mov ebp, ebx
mov ebx, dword [esp + 0x80]
jmp 0x444616
lea ebp, [eax + ecx*8 + 4]
mov esi, dword [0xe996c0]
test esi, esi
jne 0x4446ea
mov dword [ebp], 0
jmp 0x4446fe
mov esi, edi
mov edi, ebp
xor eax, eax
call fcn.0045efc0
mov eax, dword [esp + 0xc8]
mov edi, esi
mov ebp, dword [esp + 0x2c]
jmp 0x444616
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x5c], eax
xor eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x5c]
jmp 0x44473a
mov edi, dword [esp + 0x3c]
movzx esi, word [edx + edi*2]
mov word [ebx + ebp*2], si
lea ebp, [edi + 1]
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 0x20]
mov ebp, dword [esp + 0x3c]
cmp ebp, ecx
jge 0x44475d
movzx edi, word [edx + ebp*2]
lea edi, [eax + edi*8]
mov edi, dword [edi]
mov dword [esp + 0x98], edi
jmp 0x445615
mov esi, dword [esp + 0x58]
jmp 0x44471b
lea ebp, [ecx - 1]
jmp 0x44477e
mov edx, dword [esp + 0x34]
mov word [ebx + edx*2], cx
dec ebp
mov esi, dword [esp + 0x58]
mov edx, dword [esp + 0xcc]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
test ebp, ebp
jl 0x4447b4
mov dword [esp + 0x38], ebp
movzx ecx, word [ebx + ebp*2]
mov word [esp + 0x1e], cx
movzx edi, cx
lea edi, [eax + edi*8]
mov edi, dword [edi]
mov dword [esp + 0x94], edi
movzx edx, word [edx + esi]
mov word [ebx + ebp*2], dx
xor edx, edx
jmp 0x445595
movzx ecx, word [esp + 0x1e]
jmp 0x444762
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call fcn.004443b0
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0xcc]
xor ebp, ebp
jmp 0x44480d
mov esi, dword [esp + 0x58]
lea ebp, [esi + 1]
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0xcc]
cmp ebp, edx
jge 0x444bb2
mov dword [esp + 0x58], ebp
movzx esi, word [ebx + ebp*2]
mov dword [esp + 0x54], esi
lea edi, [ecx + esi*8]
mov edi, dword [edi]
mov dword [esp + 0x90], edi
cmp eax, esi
jle 0x444863
mov esi, dword [edi + 0x10]
test esi, esi
jne 0x445577
lea eax, [edi + 0x20]
mov dword [esp], eax
call fcn.00405df0
mov eax, dword [esp + 4]
test eax, eax
jne 0x444930
mov ecx, dword [esp + 0x90]
mov edx, dword [ecx]
cmp dword [ecx + 4], edx
jbe 0x4447ed
jmp 0x44489d
test byte [edi], al
lea eax, [edi + 0x28]
mov dword [esp], eax
call fcn.00405df0
mov eax, dword [esp + 4]
test eax, eax
jne 0x444b06
mov ecx, dword [esp + 0x90]
mov edx, dword [ecx]
test edx, edx
ja 0x444a4e
mov edx, dword [ecx + 0x10]
test edx, edx
je 0x4447ed
jmp 0x4449dc
mov eax, dword [ecx + 0x14]
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0xc8]
lea ebp, [ebx + edx*8 + 4]
mov ebp, dword [ebp]
movzx esi, word [ecx + 0xc]
imul esi, dword [ecx + 0x18]
add esi, dword [ecx + 8]
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebp
call fcn.00410400
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 0x18]
inc ecx
mov dword [eax + 0x18], ecx
cmp dword [eax + 4], ecx
jne 0x4448e7
mov dword [eax + 0x18], 0
inc dword [eax]
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
call fcn.00444420
mov ecx, 0xffffffff
mov edx, 0xffffffff
mov eax, dword [esp + 0x54]
xor ebx, ebx
jmp 0x444c2e
mov dword [esp + 0x74], eax
lea edi, [esp + 0xa8]
xor eax, eax
call fcn.0045f0b9
lea ecx, [0x445650]
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0xac], ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb4], edx
mov ebx, dword [esp + 0x80]
mov dword [esp + 0xb8], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc0], edx
mov edx, dword [esp + 0x54]
lea ecx, [ecx + edx*8 + 4]
mov ecx, dword [ecx]
mov ebx, dword [esp + 0x90]
mov dword [esp], ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
lea ecx, [esp + 0xa8]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 2
call fcn.00405100
mov ecx, 0xffffffff
mov edx, 0xffffffff
mov eax, dword [esp + 0x54]
xor ebx, ebx
jmp 0x444c2e
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov ecx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x80]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
call fcn.00444420
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xc8]
lea ecx, [ecx + eax*8 + 4]
mov ecx, dword [ecx]
test ecx, ecx
je 0x444a3d
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x14]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00410610
mov eax, dword [esp + 0x54]
mov ecx, 0xffffffff
mov edx, 0xffffffff
xor ebx, ebx
jmp 0x444c2e
nop
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0xc8]
lea ebx, [edx + eax*8 + 4]
mov ebx, dword [ebx]
movzx ebp, word [ecx + 0xc]
imul ebp, dword [ecx + 0x1c]
add ebp, dword [ecx + 8]
test ebx, ebx
je 0x444a91
mov dword [esp + 0x78], ebp
mov eax, dword [ecx + 0x14]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
call fcn.00410400
mov ecx, dword [esp + 0x90]
mov ebp, dword [esp + 0x78]
mov eax, dword [ecx + 0x14]
mov dword [esp], eax
mov dword [esp + 4], ebp
call fcn.00410610
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 0x1c]
inc ecx
mov dword [eax + 0x1c], ecx
cmp dword [eax + 4], ecx
jne 0x444aba
mov dword [eax + 0x1c], 0
dec dword [eax]
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
call fcn.00444420
mov ecx, 0xffffffff
mov edx, 0xffffffff
mov eax, dword [esp + 0x54]
mov ebx, 1
jmp 0x444c2e
mov dword [esp + 0x74], eax
lea edi, [esp + 0xa8]
xor eax, eax
call fcn.0045f0b9
lea ecx, [0x4456a0]
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0xac], ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb4], edx
mov ebx, dword [esp + 0x80]
mov dword [esp + 0xb8], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc0], edx
mov edx, dword [esp + 0x54]
lea ecx, [ecx + edx*8 + 4]
mov ecx, dword [ecx]
mov ebx, dword [esp + 0x90]
mov dword [esp], ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
lea ecx, [esp + 0xa8]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 2
call fcn.00405b90
mov ecx, 0xffffffff
mov edx, 0xffffffff
mov eax, dword [esp + 0x54]
mov ebx, 1
jmp 0x444c2e
movzx ebx, byte [esp + 0xdc]
test bl, bl
je 0x444bf6
mov ebx, dword fs:[0x14]
mov ebx, dword [ebx]
mov ebp, dword [ebx + 0xc8]
test ebp, ebp
jne 0x445561
mov dword [esp + 0x88], ebx
lea ebp, [ebx + 0xc8]
mov dword [esp + 0xa4], ebp
mov esi, ebp
xor edi, edi
jmp 0x444cb5
mov dword [esp], ecx
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
call fcn.00444420
mov ecx, 0xffffffff
mov edx, 0xffffffff
mov eax, 0xffffffff
xor ebx, ebx
test edx, edx
xchg ebp, ebx
seta bl
xchg ebp, ebx
test ecx, ecx
xchg esi, ebx
sete bl
xchg esi, ebx
xchg edi, ebx
setg bl
xchg edi, ebx
and esi, ebp
or edi, esi
xchg edi, eax
test al, al
xchg edi, eax
je 0x444c82
mov byte [esp + 0x1b], bl
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x20]
sub edx, eax
mov eax, dword [esp + 0x24]
sbb ecx, eax
mov dword [esp + 4], ecx
mov dword [esp], edx
mov dword [esp + 8], 1
call fcn.0042c100
mov eax, dword [esp + 0x44]
movzx ebx, byte [esp + 0x1b]
mov dword [esp + 0xe0], eax
mov byte [esp + 0xe4], bl
add esp, 0xc4
ret
mov ebx, dword [esp + 0x58]
inc ebx
lea ebp, [edi + 0x2c]
mov ecx, edx
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0xa4]
mov edi, ebx
mov ebx, dword [esp + 0x88]
cmp edi, edx
jge 0x444f42
mov dword [esp + 0x58], edi
mov dword [esp + 0x7c], ebp
mov eax, dword [esp + 0x80]
movzx edx, word [eax + edi*2]
mov dword [esp + 0x54], edx
lea ebx, [ecx + edx*8]
mov ebx, dword [ebx]
mov dword [esp + 0x90], ebx
call fcn.00436550
mov edi, dword [esp]
test byte [edi], al
mov eax, dword [esp + 0x20]
test eax, eax
setne cl
mov edx, dword [esp + 0x24]
test edx, edx
setne bl
mov ebp, dword [0xe996c0]
mov esi, dword [esp + 0x54]
mov edx, dword [esp + 0xc8]
lea eax, [edx + esi*8 + 4]
or ebx, ecx
test ebp, ebp
jne 0x444d22
mov ecx, dword [esp + 0x88]
mov dword [edi], ecx
jmp 0x444d39
mov ecx, eax
mov eax, dword [esp + 0x88]
call fcn.0045efc0
mov eax, ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x70], edi
mov byte [edi + 0x24], 1
mov ebp, dword [0xe996c0]
mov eax, dword [eax]
test ebp, ebp
jne 0x444d52
mov dword [edi + 0xc], eax
jmp 0x444d60
lea ebp, [edi + 0xc]
mov edi, ebp
call fcn.0045efc0
mov edi, dword [esp + 0x70]
mov dword [edi + 0x18], 0
mov dword [edi + 0x1c], 0
test bl, bl
je 0x444d80
mov dword [edi + 0x18], 0xffffffff
mov dword [edi + 0x1c], 0xffffffff
mov ebx, dword [0xe996c0]
test ebx, ebx
jne 0x444d9d
mov ebx, dword [esp + 0x90]
mov dword [edi + 0x34], ebx
mov ebp, dword [esp + 0x7c]
mov dword [ebp], edi
jmp 0x444dbf
lea ebx, [edi + 0x34]
mov eax, dword [esp + 0x90]
mov ebp, edi
mov edi, ebx
call fcn.0045efc0
mov edi, dword [esp + 0x7c]
mov ebx, eax
mov eax, ebp
call fcn.0045efc0
mov edi, ebp
mov ebp, dword [esp + 0xd4]
cmp ebp, esi
jle 0x444e88
test byte [ebx], al
mov esi, dword [0xe996c0]
test esi, esi
jne 0x444de3
mov dword [edi + 4], 0
jmp 0x444df3
lea esi, [edi + 4]
xor eax, eax
mov edi, esi
call fcn.0045efc0
mov edi, dword [esp + 0x70]
lea esi, [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
test eax, eax
je 0x444e3d
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x444e12
mov dword [edi + 8], eax
mov dword [eax + 4], edi
mov dword [ebx + 0x2c], edi
jmp 0x444e31
lea ebx, [edi + 8]
mov ebp, edi
mov edi, ebx
call fcn.0045efc0
lea edi, [eax + 4]
mov eax, ebp
call fcn.0045efc0
mov edi, esi
call fcn.0045efc0
mov edi, ebp
mov eax, dword [esp + 0xd4]
jmp 0x444c97
mov eax, ebp
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x444e5b
mov dword [edi + 8], 0
mov dword [ebx + 0x28], edi
mov dword [ebx + 0x2c], edi
jmp 0x444c97
lea ebp, [edi + 8]
mov edi, ebp
xor eax, eax
call fcn.0045efc0
lea edi, [ebx + 0x28]
mov eax, dword [esp + 0x70]
call fcn.0045efc0
mov edi, esi
call fcn.0045efc0
mov edi, eax
mov eax, dword [esp + 0xd4]
jmp 0x444c97
test byte [ebx], al
mov esi, dword [0xe996c0]
test esi, esi
jne 0x444e9d
mov dword [edi + 4], 0
jmp 0x444ead
lea esi, [edi + 4]
xor eax, eax
mov edi, esi
call fcn.0045efc0
mov edi, dword [esp + 0x70]
lea esi, [ebx + 0x24]
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x444ef7
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x444ecc
mov dword [edi + 8], eax
mov dword [eax + 4], edi
mov dword [ebx + 0x24], edi
jmp 0x444eeb
lea ebx, [edi + 8]
mov ebp, edi
mov edi, ebx
call fcn.0045efc0
lea edi, [eax + 4]
mov eax, ebp
call fcn.0045efc0
mov edi, esi
call fcn.0045efc0
mov edi, ebp
mov eax, dword [esp + 0xd4]
jmp 0x444c97
mov eax, ebp
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x444f15
mov dword [edi + 8], 0
mov dword [ebx + 0x20], edi
mov dword [ebx + 0x24], edi
jmp 0x444c97
lea ebp, [edi + 8]
mov edi, ebp
xor eax, eax
call fcn.0045efc0
lea edi, [ebx + 0x20]
mov eax, dword [esp + 0x70]
call fcn.0045efc0
mov edi, esi
call fcn.0045efc0
mov edi, eax
mov eax, dword [esp + 0xd4]
jmp 0x444c97
test byte [ebx], al
lea edi, [ebx + 0x44]
mov dword [esp + 0xa0], edi
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x444f61
mov dword [ebx + 0x44], 0
jmp 0x444f68
xor eax, eax
call fcn.0045efc0
nop
nop
lea eax, [ebx + 0x6d]
mov dword [esp], eax
mov byte [esp + 4], 1
call fcn.004021f0
lea eax, [0x68ccf8]
mov dword [esp], eax
mov dword [esp + 4], 0
mov word [esp + 8], 0x1809
mov dword [esp + 0xc], 1
call fcn.00436380
mov eax, dword [esp + 0x88]
mov byte [eax + 0x6c], 0
mov ecx, dword [esp + 0xc8]
mov dword [esp], ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 4], edx
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x80]
mov dword [esp + 0xc], ebx
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], edx
call fcn.004443b0
nop
mov eax, dword [esp + 0x88]
lea ecx, [eax + 0xe0]
mov dword [esp], ecx
mov dword [esp + 4], 0
call fcn.00402150
mov eax, dword [esp + 0x88]
mov ecx, dword [eax + 0x44]
mov edx, dword [0xe996c0]
test edx, edx
jne 0x445017
mov dword [eax + 0x44], 0
jmp 0x445029
mov edi, dword [esp + 0xa0]
mov edx, eax
xor eax, eax
call fcn.0045efc0
mov eax, edx
mov edx, dword [eax + 0xc8]
mov ebx, edx
jmp 0x445036
mov edx, dword [edx + 0x2c]
test edx, edx
je 0x445072
mov byte [edx + 0x24], 0
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x445058
mov dword [edx + 0xc], 0
mov dword [edx + 0x34], 0
jmp 0x445033
lea edi, [edx + 0xc]
mov ebp, eax
xor eax, eax
call fcn.0045efc0
lea edi, [edx + 0x34]
xor eax, eax
call fcn.0045efc0
mov eax, ebp
jmp 0x445033
mov edx, dword [0xe996c0]
test edx, edx
jne 0x445088
mov dword [eax + 0xc8], 0
jmp 0x445096
mov edi, dword [esp + 0xa4]
xor eax, eax
call fcn.0045efc0
mov dword [esp + 0x9c], ecx
xor eax, eax
xor edx, edx
mov ebp, 0xffffffff
xor esi, esi
mov edi, 0xffffffff
mov eax, 0xffffffff
mov dword [esp + 0x48], eax
xor eax, eax
jmp 0x4450e6
mov dword [esp], ecx
call fcn.00436820
mov eax, dword [esp + 0x58]
inc eax
mov ecx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x44]
movzx esi, byte [esp + 0x1c]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x4c], edi
xchg esi, eax
mov byte [esp + 0x1c], al
xchg esi, eax
mov dword [esp + 0x44], ebp
mov esi, dword [esp + 0x2c]
cmp eax, esi
jge 0x445498
mov dword [esp + 0x58], eax
mov dword [esp + 0x8c], edx
mov dword [esp + 0x6c], ebx
mov esi, dword [esp + 0x80]
movzx esi, word [esi + eax*2]
mov edx, dword [esp + 0xc8]
lea ebp, [edx + esi*8]
cmp ebx, ecx
jne 0x445176
mov dword [esp + 0x84], ebp
mov dword [esp + 0x54], esi
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x50], ecx
test ecx, ecx
seta dl
mov ebp, dword [ebx + 0x1c]
test ebp, ebp
xchg esi, ebx
sete bl
xchg esi, ebx
setg cl
movzx ebx, byte [ebx + 0x25]
and esi, edx
or ecx, esi
test cl, cl
je 0x445160
mov ecx, dword [esp + 0x50]
jmp 0x445166
mov ebp, edi
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x84]
mov esi, dword [esp + 0x54]
jmp 0x44544f
lea ebp, [edx + esi*8]
mov ebp, dword [ebp]
mov ecx, dword [esp + 0xd4]
cmp ecx, esi
jle 0x4452eb
test byte [ebp], al
mov esi, dword [ebx + 8]
lea ecx, [ebx + 4]
mov edx, dword [ebx + 4]
test esi, esi
je 0x445254
mov dword [esp + 0xa4], ecx
lea ecx, [ebx + 8]
test edx, edx
je 0x445208
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x4451d0
mov dword [esi + 4], edx
mov dword [edx + 8], esi
mov dword [ebx + 4], 0
mov dword [ebx + 8], 0
jmp 0x445439
lea ebp, [esi + 4]
mov edi, ebp
mov eax, edx
call fcn.0045efc0
lea edi, [eax + 8]
mov eax, esi
call fcn.0045efc0
mov edi, dword [esp + 0xa4]
xor eax, eax
call fcn.0045efc0
mov edi, ecx
call fcn.0045efc0
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
jmp 0x445439
mov edx, dword [0xe996c0]
test edx, edx
jne 0x445228
mov dword [esi + 4], 0
mov dword [ebp + 0x2c], esi
mov dword [ebx + 8], 0
jmp 0x445439
lea edx, [esi + 4]
mov edi, edx
xor eax, eax
call fcn.0045efc0
lea edi, [ebp + 0x2c]
mov eax, esi
call fcn.0045efc0
mov edi, ecx
xor eax, eax
call fcn.0045efc0
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
jmp 0x445439
test edx, edx
je 0x4452a4
mov esi, dword [0xe996c0]
test esi, esi
jne 0x445278
mov dword [edx + 8], 0
mov dword [ebp + 0x28], edx
mov dword [ebx + 4], 0
jmp 0x445439
lea esi, [edx + 8]
mov edi, esi
xor eax, eax
call fcn.0045efc0
lea edi, [ebp + 0x28]
mov eax, edx
call fcn.0045efc0
mov edi, ecx
xor eax, eax
call fcn.0045efc0
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
jmp 0x445439
cmp dword [ebp + 0x28], ebx
jne 0x445439
mov ecx, dword [0xe996c0]
test ecx, ecx
jne 0x4452ca
mov dword [ebp + 0x28], 0
mov dword [ebp + 0x2c], 0
jmp 0x445439
lea ecx, [ebp + 0x28]
mov edx, edi
mov edi, ecx
mov esi, eax
xor eax, eax
call fcn.0045efc0
lea edi, [ebp + 0x2c]
call fcn.0045efc0
mov eax, esi
mov edi, edx
jmp 0x445439
test byte [ebp], al
mov esi, dword [ebx + 8]
lea ecx, [ebx + 4]
mov edx, dword [ebx + 4]
test esi, esi
je 0x4453b4
mov dword [esp + 0xa4], ecx
lea ecx, [ebx + 8]
test edx, edx
je 0x445368
mov ebp, dword [0xe996c0]
test ebp, ebp
jne 0x445330
mov dword [esi + 4], edx
mov dword [edx + 8], esi
mov dword [ebx + 4], 0
mov dword [ebx + 8], 0
jmp 0x445439
lea ebp, [esi + 4]
mov edi, ebp
mov eax, edx
call fcn.0045efc0
lea edi, [eax + 8]
mov eax, esi
call fcn.0045efc0
mov edi, dword [esp + 0xa4]
xor eax, eax
call fcn.0045efc0
mov edi, ecx
call fcn.0045efc0
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
jmp 0x445439
mov edx, dword [0xe996c0]
test edx, edx
jne 0x445388
mov dword [esi + 4], 0
mov dword [ebp + 0x24], esi
mov dword [ebx + 8], 0
jmp 0x445439
lea edx, [esi + 4]
mov edi, edx
xor eax, eax
call fcn.0045efc0
lea edi, [ebp + 0x24]
mov eax, esi
call fcn.0045efc0
mov edi, ecx
xor eax, eax
call fcn.0045efc0
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
jmp 0x445439
test edx, edx
je 0x4453fe
mov esi, dword [0xe996c0]
test esi, esi
jne 0x4453d5
mov dword [edx + 8], 0
mov dword [ebp + 0x20], edx
mov dword [ebx + 4], 0
jmp 0x445439
lea esi, [edx + 8]
mov edi, esi
xor eax, eax
call fcn.0045efc0
lea edi, [ebp + 0x20]
mov eax, edx
call fcn.0045efc0
mov edi, ecx
xor eax, eax
call fcn.0045efc0
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
jmp 0x445439
cmp dword [ebp + 0x20], ebx
jne 0x445439
mov ecx, dword [0xe996c0]
test ecx, ecx
jne 0x44541d
mov dword [ebp + 0x20], 0
mov dword [ebp + 0x24], 0
jmp 0x445439
lea ecx, [ebp + 0x20]
mov edx, edi
mov edi, ecx
mov esi, eax
xor eax, eax
call fcn.0045efc0
lea edi, [ebp + 0x24]
call fcn.0045efc0
mov eax, esi
mov edi, edx
mov edx, dword [esp + 0x8c]
mov esi, dword [esp + 0x44]
movzx ebx, byte [esp + 0x1c]
mov ebp, edi
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], ebp
mov byte [esp + 0x1c], bl
mov dword [esp + 0x44], esi
mov dword [esp + 0x8c], edx
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx + 0x2c]
mov dword [esp + 0x6c], edx
mov edx, dword [0xe996c0]
test edx, edx
jne 0x445487
mov dword [ecx + 0x2c], 0
jmp 0x4450ba
lea edx, [ecx + 0x2c]
mov edi, edx
xor eax, eax
call fcn.0045efc0
jmp 0x4450ba
test edx, edx
je 0x44554b
mov eax, dword [esp + 0xd4]
cmp eax, ebp
jle 0x4454b8
movzx eax, byte [esp + 0x1c]
test al, al
je 0x445505
xor eax, eax
jmp 0x4454bd
movzx eax, byte [esp + 0x1c]
mov byte [esp + 0x1b], al
mov ecx, dword [esp + 0xc8]
mov dword [esp], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x80]
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], ecx
call fcn.00444420
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
movzx ebx, byte [esp + 0x1b]
jmp 0x444c2e
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
call fcn.00444420
lea eax, [0x649200]
mov dword [esp], eax
lea eax, [0x6d2c70]
mov dword [esp + 4], eax
call fcn.00433470
lea eax, [0x678275]
mov dword [esp], eax
mov dword [esp + 4], 0x14
call fcn.00433ba0
lea eax, [0x676aaf]
mov dword [esp], eax
mov dword [esp + 4], 0x11
call fcn.00433ba0
mov esi, edx
jmp 0x445505
mov ecx, dword [esp + 0x34]
mov word [ebx + ecx*2], dx
mov edi, dword [esp + 0x94]
movzx ecx, word [esp + 0x1e]
mov edx, esi
mov esi, dword [esp + 0x58]
mov dword [esp + 0x34], edx
shl edx, 1
lea esi, [edx + 1]
cmp ebp, esi
jle 0x444762
add edx, 2
cmp ebp, edx
jle 0x4455e5
mov ecx, dword [esp + 0x34]
lea ebp, [ebx + ecx*4 + 2]
movzx ebp, word [ebp]
lea ebp, [eax + ebp*8]
mov ebp, dword [ebp]
lea ecx, [ebx + ecx*4 + 4]
movzx ecx, word [ecx]
lea ecx, [eax + ecx*8]
mov ecx, dword [ecx]
cmp ecx, ebp
jbe 0x4455dc
movzx ecx, word [esp + 0x1e]
mov ebp, dword [esp + 0x38]
mov esi, edx
jmp 0x4455e5
movzx ecx, word [esp + 0x1e]
mov ebp, dword [esp + 0x38]
movzx edx, word [ebx + esi*2]
movzx ecx, dx
lea ecx, [eax + ecx*8]
mov ecx, dword [ecx]
cmp ecx, edi
ja 0x44557b
jmp 0x4447ad
mov esi, dword [esp + 0x54]
sar esi, 1
movzx edi, word [ebx + esi*2]
mov word [ebx + ebp*2], di
mov edi, dword [esp + 0x98]
mov ebp, esi
mov esi, dword [esp + 0x58]
test ebp, ebp
jle 0x44471b
lea esi, [ebp - 1]
shr esi, 0x1f
lea esi, [ebp + esi - 1]
mov dword [esp + 0x54], esi
and esi, 0xfffffffe
movzx esi, word [ebx + esi]
lea esi, [eax + esi*8]
mov esi, dword [esi]
cmp edi, esi
ja 0x4455fa
jmp 0x444757
call fcn.0045dbb0
jmp fcn.00444520