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

Disassembly:
sub esp, 0x70
mov eax, dword [esp + 0x74]
push ebx
push ebp
push esi
push edi
mov edi, dword [eax + 0x190]
movsx ecx, word [edi + 0xc]
mov edx, dword [edi + 0x8a4]
mov esi, dword [edi + 0x7c]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x8c]
mov ebp, ecx
shr ebp, 8
inc ebp
mov dword [esp + 0x38], edx
xor edx, edx
mov eax, esi
div ebp
mov edx, dword [esp + 0x28]
movsx ebx, word [edi + 0xe]
mov ebp, edx
and ebp, 0x20
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x8b0]
mov dword [esp + 0x1c], eax
mov eax, ebp
neg eax
sbb eax, eax
and eax, 0x7f8000
add eax, 0x8000
cmp word [edi + 0xa], 0
mov dword [esp + 0x24], eax
je 0x43a130
test dl, dl
js 0x43a130
cmp word [edi + 8], 3
jge 0x43a12a
lea edx, [eax*4]
mov dword [esp + 0x24], edx
jmp 0x43a130
add eax, eax
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x8c]
lea eax, [esi + edx]
cmp eax, ecx
jbe 0x43a149
sub ecx, esi
mov edx, ecx
mov dword [esp + 0x8c], edx
test edx, edx
jne 0x43a157
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret
test esi, esi
jne 0x43a19c
mov eax, edi
call fcn.00439840
mov ecx, dword [esp + 0x84]
mov eax, dword [ecx + 0x74]
mov ecx, dword [ecx + 0x70]
lea esi, [edi + 0x24]
call fcn.00439730
mov ecx, dword [esp + 0x84]
cmp dword [ecx + 0x98], 0
je 0x43a195
mov eax, dword [ecx + 0x78]
mov ecx, dword [ecx + 0x70]
lea esi, [edi + 0x50]
call fcn.00439730
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x54]
cmp byte [edi + eax*8 + 0x84], 0
jne 0x43a207
cmp dword [edi + 0x884], 0
jne 0x43a1d2
mov ecx, edi
call fcn.004399d0
mov dword [edi + 0x888], eax
shl eax, 8
push eax
call fcn.0044bdab
add esp, 4
mov dword [edi + 0x884], eax
mov ecx, dword [edi + 0x7c]
mov esi, dword [esp + 0x54]
mov dword [edi + esi*8 + 0x88], ecx
mov eax, dword [edi + 0x888]
imul eax, esi
add eax, dword [edi + 0x884]
push edi
call fcn.00439a70
mov edx, dword [esp + 0x90]
add esp, 4
mov byte [edi + esi*8 + 0x84], 1
mov eax, dword [edi + 0x8b4]
mov ecx, dword [edi + 0x8b8]
movzx esi, word [edi + 0xa]
mov dword [esp + 0x70], eax
mov eax, dword [edi + 0x8bc]
mov dword [esp + 0x74], ecx
mov ecx, dword [edi + 0x8c0]
mov dword [esp + 0x78], eax
mov eax, dword [edi + 0x8c4]
mov dword [esp + 0x7c], ecx
mov ecx, dword [edi + 0x8c8]
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], ecx
test si, si
je 0x43a260
test dword [esp + 0x28], 0xa000
je 0x43a281
mov dword [esp + 0x2c], 0xffffff00
jmp 0x43a281
test dword [esp + 0x28], 0x2000
je 0x43a281
mov eax, dword [esp + 0x28]
shr eax, 7
not eax
and eax, 0xffffff00
or eax, 0xfffffe00
mov dword [esp + 0x2c], eax
mov ecx, ebx
test ebp, ebp
je 0x43a29f
mov ebp, 0xff800000
sar ebp, cl
mov eax, 0x7fffff
mov dword [esp + 0x48], ebp
shl ebp, cl
mov dword [esp + 0x40], ebp
jmp 0x43a2b9
mov eax, 0xffff8000
sar eax, cl
mov dword [esp + 0x48], eax
shl eax, cl
mov dword [esp + 0x40], eax
mov ebp, dword [esp + 0x40]
mov eax, 0x7fff
sar eax, cl
mov dword [esp + 0x3c], eax
shl eax, cl
xor ecx, ecx
mov dword [esp + 0x44], eax
movzx eax, word [edi + 8]
cmp ax, 3
jne 0x43b582
cmp si, cx
jne 0x43a8b8
mov ebx, dword [esp + 0x28]
test bl, 1
je 0x43a8b8
mov dword [esp + 0x14], ecx
test bl, 2
je 0x43a43d
test bl, 0x40
je 0x43a3d6
mov ebx, dword [esp + 0x88]
cmp edx, ecx
jbe 0x43c0b3
push 0
mov esi, edi
call fcn.0043ce10
cmp eax, 0x80000000
je 0x43c0b3
mov ecx, dword [esp + 0x74]
add ecx, eax
add dword [esp + 0x70], ecx
mov esi, 4
cmp dword [edi + 0x48], esi
mov dword [esp + 0x74], ecx
jge 0x43a36f
lea esp, [esp]
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43a357
mov edx, dword [edi + 0x24]
lea eax, [edi + 0x24]
push eax
call edx
add esp, 4
mov eax, dword [edi + 0x30]
movzx edx, byte [eax]
mov ecx, dword [edi + 0x48]
shl edx, cl
add ecx, 8
mov dword [edi + 0x48], ecx
or dword [edi + 0x3c], edx
cmp ecx, esi
jl 0x43a340
mov ecx, dword [edi + 0x48]
cmp ecx, 0x20
mov eax, dword [edi + 0x3c]
jle 0x43a394
lea edx, [ecx - 4]
mov ecx, dword [edi + 0x30]
mov dword [edi + 0x48], edx
movzx ebp, byte [ecx]
mov ecx, 8
sub cl, dl
shr ebp, cl
mov dword [edi + 0x3c], ebp
jmp 0x43a39e
add ecx, 0xfffffffc
shr dword [edi + 0x3c], 4
mov dword [edi + 0x48], ecx
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x1c]
and eax, 0xf
shl edx, 4
add eax, edx
lea edx, [eax + ecx*2]
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
inc eax
add edx, ecx
add ebx, esi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43a310
jmp 0x43c0b3
mov ebp, dword [esp + 0x88]
cmp edx, ecx
jbe 0x43c0b3
push 0
mov esi, edi
call fcn.0043ce10
cmp eax, 0x80000000
je 0x43c0b3
mov ecx, dword [esp + 0x74]
add ecx, eax
mov eax, dword [esp + 0x70]
add eax, ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
lea edx, [eax + ecx*2]
add edx, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x70], eax
shl eax, cl
add ebp, 4
mov dword [esp + 0x1c], edx
mov dword [ebp - 4], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43a3e5
jmp 0x43c0b3
mov eax, dword [esp + 0x88]
mov dword [esp + 0x18], eax
test bl, 0x10
je 0x43a6e4
cmp edx, ecx
jbe 0x43c0b3
mov eax, ebx
and eax, 0x400
mov dword [esp + 0x4c], eax
jmp 0x43a46a
mov eax, dword [esp + 0x4c]
mov esi, edi
test eax, eax
je 0x43a479
push 0
call fcn.0043c420
jmp 0x43a480
xor eax, eax
call fcn.0043c9c0
mov esi, eax
cmp esi, 0x80000000
je 0x43c0b3
test dword [esp + 0x28], 0x8000
mov eax, dword [edi + 0x80]
lea ecx, [edi + 0x8cc]
mov dword [esp + 0x30], eax
je 0x43a523
test eax, eax
je 0x43a58e
mov ebx, dword [esp + 0x38]
jmp 0x43a4c0
mov ebp, dword [ecx + 8]
mov edx, dword [ecx + ebx*4 + 0x10]
dec dword [esp + 0x30]
mov eax, ebp
imul eax, edx
add eax, 0x100
sar eax, 9
add eax, esi
test edx, edx
je 0x43a507
test esi, esi
je 0x43a507
xor edx, esi
jl 0x43a4f7
lea edx, [ebp + 1]
mov dword [ecx + 8], edx
cmp ebp, 0x200
jne 0x43a507
dec edx
jmp 0x43a504
lea edx, [ebp - 1]
mov dword [ecx + 8], edx
cmp ebp, dword [esp + 0x2c]
jne 0x43a507
inc edx
mov dword [ecx + 8], edx
mov edx, dword [ecx]
add edx, ebx
and edx, 7
mov dword [ecx + edx*4 + 0x10], eax
add ecx, 0x60
cmp dword [esp + 0x30], 0
mov esi, eax
jne 0x43a4c0
jmp 0x43a592
test eax, eax
je 0x43a58e
mov ebx, dword [esp + 0x38]
jmp 0x43a530
mov ebp, dword [ecx + 8]
mov edx, dword [ecx + ebx*4 + 0x10]
dec dword [esp + 0x30]
mov eax, ebp
imul eax, edx
sub eax, 0xffffff80
sar eax, 8
add eax, esi
test edx, edx
je 0x43a575
test esi, esi
je 0x43a575
xor edx, esi
jl 0x43a565
lea edx, [ebp + 1]
mov dword [ecx + 8], edx
cmp ebp, 0x100
jne 0x43a575
dec edx
jmp 0x43a572
lea edx, [ebp - 1]
mov dword [ecx + 8], edx
cmp ebp, dword [esp + 0x2c]
jne 0x43a575
inc edx
mov dword [ecx + 8], edx
mov edx, dword [ecx]
add edx, ebx
and edx, 7
mov dword [ecx + edx*4 + 0x10], eax
add ecx, 0x60
cmp dword [esp + 0x30], 0
mov esi, eax
jne 0x43a530
jmp 0x43a592
mov ebx, dword [esp + 0x38]
inc ebx
and ebx, 7
test byte [esp + 0x28], 0x40
mov dword [esp + 0x38], ebx
je 0x43a6a8
cmp dword [edi + 0x8a0], 8
jl 0x43a5f8
mov eax, dword [edi + 0x48]
test eax, eax
je 0x43a5be
dec eax
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x3c]
jmp 0x43a5e4
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43a5d4
lea eax, [edi + 0x24]
push eax
mov eax, dword [eax]
call eax
add esp, 4
mov ecx, dword [edi + 0x30]
mov dword [edi + 0x48], 7
movzx eax, byte [ecx]
mov dword [edi + 0x3c], eax
shr dword [edi + 0x3c], 1
and eax, 1
test eax, eax
je 0x43a5f8
mov ebx, 4
jmp 0x43a688
mov ebx, 4
cmp dword [edi + 0x48], ebx
jge 0x43a636
mov ebp, 1
add dword [edi + 0x30], ebp
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43a61e
mov edx, dword [edi + 0x24]
lea eax, [edi + 0x24]
push eax
call edx
add esp, 4
mov eax, dword [edi + 0x30]
movzx edx, byte [eax]
mov ecx, dword [edi + 0x48]
shl edx, cl
add ecx, 8
mov dword [edi + 0x48], ecx
or dword [edi + 0x3c], edx
cmp ecx, ebx
jl 0x43a607
mov eax, dword [edi + 0x48]
cmp eax, 0x20
mov edx, dword [edi + 0x3c]
jle 0x43a65b
mov ecx, dword [edi + 0x30]
add eax, 0xfffffffc
mov dword [edi + 0x48], eax
movzx ebp, byte [ecx]
mov ecx, 8
sub cl, al
shr ebp, cl
mov dword [edi + 0x3c], ebp
jmp 0x43a665
add eax, 0xfffffffc
shr dword [edi + 0x3c], 4
mov dword [edi + 0x48], eax
and edx, 0xf
cmp edx, dword [edi + 0x89c]
je 0x43a682
mov dword [edi + 0x89c], edx
mov dword [edi + 0x8a0], 0
jmp 0x43a688
inc dword [edi + 0x8a0]
mov eax, dword [esp + 0x1c]
shl esi, 4
add esi, dword [edi + 0x89c]
lea edx, [esi + eax*2]
add edx, eax
mov eax, dword [esp + 0x18]
mov dword [eax], esi
mov dword [esp + 0x1c], edx
add eax, ebx
jmp 0x43a6c5
mov eax, dword [esp + 0x1c]
lea ecx, [esi + eax*2]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x34]
shl esi, cl
add eax, 4
mov dword [eax - 4], esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43a466
jmp 0x43c0b3
cmp edx, ecx
jbe 0x43c0b3
push 0
mov esi, edi
call fcn.0043ce10
mov esi, eax
cmp esi, 0x80000000
je 0x43c0b3
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
mov ecx, ebp
imul ecx, eax
sub ecx, 0xffffff80
sar ecx, 8
add ecx, ebx
add ecx, esi
xor edx, edx
test eax, eax
setge dl
xor eax, eax
test esi, esi
setg al
mov esi, 1
cmp edx, eax
jne 0x43a74b
mov edx, ebp
add ebp, esi
mov dword [esp + 0x68], ebp
cmp edx, 0x100
jne 0x43a75b
mov dword [esp + 0x68], edx
jmp 0x43a75b
mov eax, ebp
sub ebp, esi
mov dword [esp + 0x68], ebp
test eax, eax
jne 0x43a75b
mov dword [esp + 0x68], eax
sub ecx, ebx
add ebx, ecx
test byte [esp + 0x28], 0x40
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], ebx
je 0x43a87b
cmp dword [edi + 0x8a0], 8
jl 0x43a7c5
mov eax, dword [edi + 0x48]
test eax, eax
je 0x43a78b
dec eax
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x3c]
jmp 0x43a7b2
add dword [edi + 0x30], esi
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43a7a2
mov ecx, dword [edi + 0x24]
lea eax, [edi + 0x24]
push eax
call ecx
add esp, 4
mov edx, dword [edi + 0x30]
mov dword [edi + 0x48], 7
movzx eax, byte [edx]
mov dword [edi + 0x3c], eax
shr dword [edi + 0x3c], 1
and eax, esi
test eax, eax
je 0x43a7c5
mov ebp, 4
jmp 0x43a855
mov ebp, 4
cmp dword [edi + 0x48], ebp
jge 0x43a7fe
nop
add dword [edi + 0x30], esi
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43a7e6
lea eax, [edi + 0x24]
push eax
mov eax, dword [eax]
call eax
add esp, 4
mov edx, dword [edi + 0x30]
movzx eax, byte [edx]
mov ecx, dword [edi + 0x48]
shl eax, cl
add ecx, 8
mov dword [edi + 0x48], ecx
or dword [edi + 0x3c], eax
cmp ecx, ebp
jl 0x43a7d0
mov eax, dword [edi + 0x48]
cmp eax, 0x20
mov edx, dword [edi + 0x3c]
jle 0x43a828
mov ecx, dword [edi + 0x30]
add eax, 0xfffffffc
mov dword [edi + 0x48], eax
movzx esi, byte [ecx]
mov ecx, 8
sub cl, al
shr esi, cl
mov dword [edi + 0x3c], esi
mov esi, 1
jmp 0x43a832
add eax, 0xfffffffc
shr dword [edi + 0x3c], 4
mov dword [edi + 0x48], eax
and edx, 0xf
cmp edx, dword [edi + 0x89c]
je 0x43a84f
mov dword [edi + 0x89c], edx
mov dword [edi + 0x8a0], 0
jmp 0x43a855
add dword [edi + 0x8a0], esi
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov eax, ebx
shl eax, 4
add eax, dword [edi + 0x89c]
mov dword [edx], eax
lea eax, [eax + ecx*2]
add eax, ecx
add edx, ebp
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edx
jmp 0x43a89c
mov eax, dword [esp + 0x1c]
lea ecx, [ebx + eax*2]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x34]
shl ebx, cl
add eax, 4
mov dword [esp + 0x18], eax
mov dword [eax - 4], ebx
mov eax, dword [esp + 0x14]
add eax, esi
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43a6ec
jmp 0x43c0b3
cmp ax, 3
jne 0x43b582
cmp si, cx
jne 0x43b582
mov ebx, dword [esp + 0x28]
test bl, 1
jne 0x43b586
mov eax, dword [edi + 0x890]
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x894]
mov dword [esp + 0x48], eax
mov eax, dword [edi + 0x88c]
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x898]
mov dword [esp + 0x44], eax
test bl, 2
je 0x43ab09
mov ebp, dword [esp + 0x88]
test bl, 0x40
je 0x43aa32
mov dword [esp + 0x14], ecx
cmp edx, ecx
jbe 0x43aadc
push 0
mov esi, edi
call fcn.0043ce10
mov ebx, eax
cmp ebx, 0x80000000
je 0x43aadc
push 1
call fcn.0043ce10
mov ecx, eax
and ecx, 1
lea edx, [ebx + ebx]
or ecx, edx
mov edx, dword [esp + 0x74]
lea esi, [eax + ecx]
sub ecx, eax
mov eax, dword [esp + 0x7c]
sar esi, 1
add edx, esi
add dword [esp + 0x70], edx
sar ecx, 1
add eax, ecx
add dword [esp + 0x78], eax
mov esi, 8
cmp dword [edi + 0x48], esi
mov dword [esp + 0x74], edx
mov dword [esp + 0x7c], eax
jge 0x43a9ad
lea esp, [esp]
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43a996
lea eax, [edi + 0x24]
push eax
mov eax, dword [eax]
call eax
add esp, 4
mov edx, dword [edi + 0x30]
movzx eax, byte [edx]
mov ecx, dword [edi + 0x48]
shl eax, cl
add ecx, esi
mov dword [edi + 0x48], ecx
or dword [edi + 0x3c], eax
cmp ecx, esi
jl 0x43a980
mov eax, dword [edi + 0x48]
cmp eax, 0x20
mov edx, dword [edi + 0x3c]
jle 0x43a9d2
mov ecx, dword [edi + 0x30]
add eax, 0xfffffff8
mov dword [edi + 0x48], eax
movzx esi, byte [ecx]
mov ecx, 8
sub cl, al
shr esi, cl
mov dword [edi + 0x3c], esi
jmp 0x43a9dc
add eax, 0xfffffff8
shr dword [edi + 0x3c], 8
mov dword [edi + 0x48], eax
mov ecx, dword [esp + 0x70]
mov eax, edx
sar eax, 4
and eax, 0xf
shl ecx, 4
add eax, ecx
mov ecx, dword [esp + 0x1c]
mov dword [ebp], eax
lea eax, [eax + ecx*2]
add eax, ecx
mov ecx, dword [esp + 0x78]
and edx, 0xf
shl ecx, 4
add edx, ecx
add ebp, 4
mov dword [ebp], edx
lea edx, [edx + eax*2]
add edx, eax
mov eax, dword [esp + 0x14]
inc eax
add ebp, 4
mov dword [esp + 0x1c], edx
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43a925
jmp 0x43aadc
xor ebx, ebx
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x8c], ebx
jbe 0x43aadc
push 0
mov esi, edi
call fcn.0043ce10
mov dword [esp + 0x54], eax
cmp eax, 0x80000000
je 0x43aad8
push 1
call fcn.0043ce10
mov edx, dword [esp + 0x54]
mov ecx, eax
and ecx, 1
add edx, edx
or ecx, edx
mov edx, dword [esp + 0x74]
lea esi, [eax + ecx]
sub ecx, eax
mov eax, dword [esp + 0x7c]
sar ecx, 1
add eax, ecx
mov ecx, dword [esp + 0x70]
sar esi, 1
add edx, esi
mov esi, dword [esp + 0x1c]
add ecx, edx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x78]
add edx, eax
mov dword [esp + 0x7c], eax
lea eax, [ecx + esi*2]
add eax, esi
lea esi, [edx + eax*2]
add esi, eax
mov eax, ecx
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x34]
shl eax, cl
mov dword [esp + 0x78], edx
shl edx, cl
add ebp, 4
mov dword [ebp - 4], eax
inc ebx
mov dword [ebp], edx
add ebp, 4
mov dword [esp + 0x1c], esi
cmp ebx, dword [esp + 0x8c]
jb 0x43aa45
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
mov dword [edi + 0x890], eax
mov eax, dword [esp + 0x44]
mov dword [edi + 0x894], ecx
mov dword [edi + 0x88c], edx
mov dword [edi + 0x898], eax
jmp 0x43c0b3
mov eax, dword [esp + 0x88]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
test bl, 0x10
je 0x43b295
cmp edx, ecx
jbe 0x43aadc
mov eax, ebx
and eax, 0x1000
mov dword [esp + 0x58], eax
jmp 0x43ab36
mov eax, dword [esp + 0x58]
mov esi, edi
test eax, eax
je 0x43ab5b
push 0
call fcn.0043c420
mov ebp, eax
cmp ebp, 0x80000000
je 0x43aadc
push 1
call fcn.0043c420
mov esi, eax
jmp 0x43acea
test dword [esp + 0x28], 0x400
je 0x43ac28
push 0
call fcn.0043c420
mov ebx, eax
cmp ebx, 0x80000000
je 0x43aadc
push 1
call fcn.0043c420
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
add ebp, esi
cmp edx, ecx
lea esi, [edx + ecx]
jle 0x43abe6
cmp esi, ebp
jge 0x43abb8
cmp edx, dword [esp + 0x44]
jge 0x43abb8
lea ecx, [eax + ebx]
mov ebp, eax
sub eax, ebx
mov esi, ebx
mov ebx, eax
jmp 0x43ac8a
cmp dword [esp + 0x3c], ecx
jge 0x43abd8
mov edx, ebx
and edx, 1
lea ecx, [eax + eax]
or ecx, edx
mov esi, ecx
lea ebp, [ecx + ebx]
sub esi, ebx
sar ebp, 1
sar esi, 1
jmp 0x43ac8a
mov esi, eax
sub esi, ebx
mov ebp, eax
lea ecx, [eax + esi]
jmp 0x43ac8a
cmp esi, ebp
jge 0x43abfe
cmp ecx, dword [esp + 0x44]
jge 0x43abfe
mov ebp, ebx
lea ecx, [eax + ebx]
mov esi, eax
sub ebx, eax
jmp 0x43ac8a
cmp dword [esp + 0x3c], edx
jge 0x43ac1e
lea ecx, [eax + eax]
mov eax, ebx
and eax, 1
or ecx, eax
mov esi, ecx
lea ebp, [ecx + ebx]
sub esi, ebx
sar ebp, 1
sar esi, 1
jmp 0x43ac8a
lea ebp, [eax + ebx]
mov esi, eax
lea ecx, [eax + ebp]
jmp 0x43ac8a
xor eax, eax
call fcn.0043c9c0
mov ebx, eax
cmp ebx, 0x80000000
je 0x43aadc
mov eax, 1
call fcn.0043c9c0
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [esp + 0x3c]
cmp eax, edx
jg 0x43ac71
cmp eax, dword [esp + 0x40]
jg 0x43ac71
mov edx, ebx
add ecx, ecx
and edx, 1
or ecx, edx
mov esi, ecx
lea ebp, [ecx + ebx]
sub esi, ebx
sar ebp, 1
sar esi, 1
jmp 0x43ac86
cmp dword [esp + 0x40], edx
mov esi, ecx
jg 0x43ac81
sub esi, ebx
mov ebp, ecx
add ecx, esi
jmp 0x43ac86
lea ebp, [ecx + ebx]
add ecx, ebp
mov ebx, ebp
sub ebx, esi
sar ecx, 1
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x3c]
sar edx, 8
sub eax, edx
add dword [esp + 0x3c], eax
mov eax, ebp
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x40]
sar edx, 8
sub eax, edx
add dword [esp + 0x40], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x48]
sar edx, 8
sub eax, edx
add dword [esp + 0x48], eax
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar edx, 8
sub eax, edx
add dword [esp + 0x44], eax
test dword [esp + 0x28], 0x4000
je 0x43acea
mov ebp, ebx
mov esi, ecx
test dword [esp + 0x28], 0x8000
mov ecx, dword [edi + 0x80]
lea eax, [edi + 0x8cc]
mov dword [esp + 0x30], ecx
je 0x43af0c
test ecx, ecx
je 0x43b0f9
mov ecx, dword [eax]
dec dword [esp + 0x30]
test ecx, ecx
jle 0x43adda
mov ecx, dword [esp + 0x38]
mov edx, dword [eax + ecx*4 + 0x30]
mov ebx, dword [eax + ecx*4 + 0x10]
mov dword [esp + 0x50], edx
mov edx, dword [eax]
add ecx, edx
mov edx, dword [eax + 0xc]
imul edx, dword [esp + 0x50]
and ecx, 7
mov dword [esp + 0x5c], ecx
mov ecx, dword [eax + 8]
imul ecx, ebx
add ecx, 0x100
add edx, 0x100
sar ecx, 9
sar edx, 9
add ecx, ebp
add edx, esi
test ebx, ebx
je 0x43ad91
test ebp, ebp
je 0x43ad91
xor ebx, ebp
mov ebp, dword [eax + 8]
jl 0x43ad7d
lea ebx, [ebp + 1]
mov dword [eax + 8], ebx
cmp ebp, 0x200
jne 0x43ad91
dec ebx
jmp 0x43ad8e
lea ebx, [ebp - 1]
mov dword [esp + 0x54], ebx
mov dword [eax + 8], ebx
cmp ebp, dword [esp + 0x2c]
jne 0x43ad91
inc ebx
mov dword [eax + 8], ebx
mov ebx, dword [esp + 0x50]
test ebx, ebx
je 0x43adc5
test esi, esi
je 0x43adc5
xor ebx, esi
mov ebx, dword [eax + 0xc]
jl 0x43adb5
lea esi, [ebx + 1]
mov dword [eax + 0xc], esi
cmp ebx, 0x200
jne 0x43adc5
dec esi
jmp 0x43adc2
lea esi, [ebx - 1]
mov dword [eax + 0xc], esi
cmp ebx, dword [esp + 0x2c]
jne 0x43adc5
inc esi
mov dword [eax + 0xc], esi
mov ebx, dword [esp + 0x5c]
mov ebp, ecx
mov dword [eax + ebx*4 + 0x10], ecx
mov esi, edx
mov dword [eax + ebx*4 + 0x30], edx
jmp 0x43aef9
mov ebx, dword [eax + 0x10]
mov edx, dword [eax + 8]
cmp ecx, 0xffffffff
mov ecx, ebx
jne 0x43ae77
imul ecx, edx
add ecx, 0x100
sar ecx, 9
add ecx, ebp
test ebx, ebx
je 0x43ae26
test ebp, ebp
je 0x43ae26
xor ebx, ebp
jl 0x43ae16
lea ebx, [edx + 1]
mov dword [eax + 8], ebx
cmp edx, 0x200
jne 0x43ae26
dec ebx
jmp 0x43ae23
lea ebx, [edx - 1]
mov dword [eax + 8], ebx
cmp edx, dword [esp + 0x2c]
jne 0x43ae26
inc ebx
mov dword [eax + 8], ebx
mov ebx, dword [eax + 0xc]
mov edx, ebx
imul edx, ecx
add edx, 0x100
sar edx, 9
add edx, esi
mov ebp, ecx
test ecx, ecx
je 0x43ae70
test esi, esi
je 0x43ae70
xor ecx, esi
jl 0x43ae60
lea ecx, [ebx + 1]
mov dword [eax + 0xc], ecx
cmp ebx, 0x200
jne 0x43ae70
dec ecx
mov dword [eax + 0xc], ecx
mov esi, edx
jmp 0x43aef6
lea ecx, [ebx - 1]
mov dword [eax + 0xc], ecx
cmp ebx, dword [esp + 0x2c]
jne 0x43ae70
inc ecx
mov dword [eax + 0xc], ecx
mov esi, edx
jmp 0x43aef6
imul ecx, edx
add ecx, 0x100
sar ecx, 9
add ecx, esi
test ebx, ebx
je 0x43aeb2
test esi, esi
je 0x43aeb2
xor ebx, esi
jl 0x43aea2
lea esi, [edx + 1]
mov dword [eax + 8], esi
cmp edx, 0x200
jne 0x43aeb2
dec esi
jmp 0x43aeaf
lea esi, [edx - 1]
mov dword [eax + 8], esi
cmp edx, dword [esp + 0x2c]
jne 0x43aeb2
inc esi
mov dword [eax + 8], esi
mov ebx, dword [eax + 0xc]
mov edx, ebx
imul edx, ecx
add edx, 0x100
sar edx, 9
add edx, ebp
mov esi, ecx
test ecx, ecx
je 0x43aef4
test ebp, ebp
je 0x43aef4
xor ecx, ebp
jl 0x43aee4
lea ecx, [ebx + 1]
mov dword [eax + 0xc], ecx
cmp ebx, 0x200
jne 0x43aef4
dec ecx
jmp 0x43aef1
lea ecx, [ebx - 1]
mov dword [eax + 0xc], ecx
cmp ebx, dword [esp + 0x2c]
jne 0x43aef4
inc ecx
mov dword [eax + 0xc], ecx
mov ebp, edx
mov dword [eax + 0x10], edx
add eax, 0x60
cmp dword [esp + 0x30], 0
jne 0x43ad10
jmp 0x43b0f9
test ecx, ecx
je 0x43b0f9
mov ecx, dword [eax]
dec dword [esp + 0x30]
test ecx, ecx
jle 0x43afd8
mov ecx, dword [esp + 0x38]
mov edx, dword [eax + ecx*4 + 0x30]
mov ebx, dword [eax + ecx*4 + 0x10]
mov dword [esp + 0x50], edx
mov edx, dword [eax]
add ecx, edx
mov edx, dword [eax + 0xc]
imul edx, dword [esp + 0x50]
and ecx, 7
mov dword [esp + 0x64], ecx
mov ecx, dword [eax + 8]
imul ecx, ebx
sub ecx, 0xffffff80
sub edx, 0xffffff80
sar ecx, 8
sar edx, 8
add ecx, ebp
add edx, esi
test ebx, ebx
je 0x43af8f
test ebp, ebp
je 0x43af8f
xor ebx, ebp
mov ebp, dword [eax + 8]
jl 0x43af7b
lea ebx, [ebp + 1]
mov dword [eax + 8], ebx
cmp ebp, 0x100
jne 0x43af8f
dec ebx
jmp 0x43af8c
lea ebx, [ebp - 1]
mov dword [esp + 0x5c], ebx
mov dword [eax + 8], ebx
cmp ebp, dword [esp + 0x2c]
jne 0x43af8f
inc ebx
mov dword [eax + 8], ebx
mov ebx, dword [esp + 0x50]
test ebx, ebx
je 0x43afc3
test esi, esi
je 0x43afc3
xor ebx, esi
mov ebx, dword [eax + 0xc]
jl 0x43afb3
lea esi, [ebx + 1]
mov dword [eax + 0xc], esi
cmp ebx, 0x100
jne 0x43afc3
dec esi
jmp 0x43afc0
lea esi, [ebx - 1]
mov dword [eax + 0xc], esi
cmp ebx, dword [esp + 0x2c]
jne 0x43afc3
inc esi
mov dword [eax + 0xc], esi
mov ebx, dword [esp + 0x64]
mov ebp, ecx
mov dword [eax + ebx*4 + 0x10], ecx
mov esi, edx
mov dword [eax + ebx*4 + 0x30], edx
jmp 0x43b0eb
mov ebx, dword [eax + 0x10]
mov edx, dword [eax + 8]
cmp ecx, 0xffffffff
mov ecx, ebx
jne 0x43b06f
imul ecx, edx
sub ecx, 0xffffff80
sar ecx, 8
add ecx, ebp
test ebx, ebx
je 0x43b021
test ebp, ebp
je 0x43b021
xor ebx, ebp
jl 0x43b011
lea ebx, [edx + 1]
mov dword [eax + 8], ebx
cmp edx, 0x100
jne 0x43b021
dec ebx
jmp 0x43b01e
lea ebx, [edx - 1]
mov dword [eax + 8], ebx
cmp edx, dword [esp + 0x2c]
jne 0x43b021
inc ebx
mov dword [eax + 8], ebx
mov ebx, dword [eax + 0xc]
mov edx, ebx
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, esi
mov ebp, ecx
test ecx, ecx
je 0x43b068
test esi, esi
je 0x43b068
xor ecx, esi
jl 0x43b058
lea ecx, [ebx + 1]
mov dword [eax + 0xc], ecx
cmp ebx, 0x100
jne 0x43b068
dec ecx
mov dword [eax + 0xc], ecx
mov esi, edx
jmp 0x43b0e8
lea ecx, [ebx - 1]
mov dword [eax + 0xc], ecx
cmp ebx, dword [esp + 0x2c]
jne 0x43b068
inc ecx
mov dword [eax + 0xc], ecx
mov esi, edx
jmp 0x43b0e8
imul ecx, edx
sub ecx, 0xffffff80
sar ecx, 8
add ecx, esi
test ebx, ebx
je 0x43b0a7
test esi, esi
je 0x43b0a7
xor ebx, esi
jl 0x43b097
lea esi, [edx + 1]
mov dword [eax + 8], esi
cmp edx, 0x100
jne 0x43b0a7
dec esi
jmp 0x43b0a4
lea esi, [edx - 1]
mov dword [eax + 8], esi
cmp edx, dword [esp + 0x2c]
jne 0x43b0a7
inc esi
mov dword [eax + 8], esi
mov ebx, dword [eax + 0xc]
mov edx, ebx
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, ebp
mov esi, ecx
test ecx, ecx
je 0x43b0e6
test ebp, ebp
je 0x43b0e6
xor ecx, ebp
jl 0x43b0d6
lea ecx, [ebx + 1]
mov dword [eax + 0xc], ecx
cmp ebx, 0x100
jne 0x43b0e6
dec ecx
jmp 0x43b0e3
lea ecx, [ebx - 1]
mov dword [eax + 0xc], ecx
cmp ebx, dword [esp + 0x2c]
jne 0x43b0e6
inc ecx
mov dword [eax + 0xc], ecx
mov ebp, edx
mov dword [eax + 0x10], edx
add eax, 0x60
cmp dword [esp + 0x30], 0
jne 0x43af14
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x28]
inc eax
and eax, 7
mov dword [esp + 0x38], eax
test ecx, 0x4000
je 0x43b127
mov edx, ebp
and edx, 1
lea eax, [esi + esi]
or eax, edx
mov edx, eax
sub edx, ebp
sar edx, 1
add ebp, eax
mov esi, edx
sar ebp, 1
test cl, 0x40
je 0x43b24b
mov ebx, 8
cmp dword [edi + 0x8a0], ebx
jl 0x43b181
mov eax, dword [edi + 0x48]
test eax, eax
je 0x43b14d
dec eax
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x3c]
jmp 0x43b173
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43b163
lea eax, [edi + 0x24]
push eax
mov eax, dword [eax]
call eax
add esp, 4
mov ecx, dword [edi + 0x30]
mov dword [edi + 0x48], 7
movzx eax, byte [ecx]
mov dword [edi + 0x3c], eax
shr dword [edi + 0x3c], 1
and eax, 1
test eax, eax
jne 0x43b209
cmp dword [edi + 0x48], ebx
jge 0x43b1b4
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43b19d
mov edx, dword [edi + 0x24]
lea eax, [edi + 0x24]
push eax
call edx
add esp, 4
mov eax, dword [edi + 0x30]
movzx edx, byte [eax]
mov ecx, dword [edi + 0x48]
shl edx, cl
add ecx, ebx
mov dword [edi + 0x48], ecx
or dword [edi + 0x3c], edx
cmp ecx, ebx
jl 0x43b186
mov eax, dword [edi + 0x48]
cmp eax, 0x20
mov edx, dword [edi + 0x3c]
jle 0x43b1d9
mov ecx, dword [edi + 0x30]
add eax, 0xfffffff8
mov dword [edi + 0x48], eax
movzx ebx, byte [ecx]
mov ecx, 8
sub cl, al
shr ebx, cl
mov dword [edi + 0x3c], ebx
jmp 0x43b1e3
add eax, 0xfffffff8
shr dword [edi + 0x3c], 8
mov dword [edi + 0x48], eax
and edx, 0xff
cmp edx, dword [edi + 0x89c]
je 0x43b203
mov dword [edi + 0x89c], edx
mov dword [edi + 0x8a0], 0
jmp 0x43b209
inc dword [edi + 0x8a0]
mov eax, dword [edi + 0x89c]
mov edx, dword [esp + 0x18]
sar eax, 4
shl ebp, 4
add eax, ebp
mov dword [edx], eax
mov ecx, dword [edi + 0x89c]
and ecx, 0xf
shl esi, 4
add ecx, esi
mov esi, dword [esp + 0x1c]
add edx, 4
lea eax, [eax + esi*2]
add eax, esi
mov dword [edx], ecx
lea ecx, [ecx + eax*2]
add ecx, eax
add edx, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], edx
jmp 0x43b27a
mov ecx, dword [esp + 0x1c]
lea eax, [ebp + ecx*2]
add eax, ecx
mov ecx, dword [esp + 0x34]
lea edx, [esi + eax*2]
add edx, eax
mov eax, dword [esp + 0x18]
shl ebp, cl
shl esi, cl
add eax, 4
add eax, 4
mov dword [eax - 8], ebp
mov dword [eax - 4], esi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43ab32
jmp 0x43aadc
cmp edx, ecx
jbe 0x43aadc
lea ecx, [ecx]
mov ebp, dword [esp + 0x3c]
push 0
mov esi, edi
call fcn.0043ce10
mov ebx, eax
cmp ebx, 0x80000000
je 0x43aadc
mov eax, dword [esp + 0x48]
cmp ebp, eax
jg 0x43b2e6
cmp ebp, dword [esp + 0x40]
jg 0x43b2e6
push 1
call fcn.0043ce10
mov ecx, ebx
and ecx, 1
add eax, eax
or eax, ecx
mov ebp, eax
lea ecx, [eax + ebx]
sub ebp, ebx
sar ecx, 1
sar ebp, 1
jmp 0x43b308
cmp dword [esp + 0x40], eax
push 1
jg 0x43b2fb
call fcn.0043ce10
mov ecx, eax
mov ebp, ecx
sub ebp, ebx
jmp 0x43b305
call fcn.0043ce10
mov ebp, eax
lea ecx, [ebx + ebp]
lea eax, [ecx + ebp]
sar eax, 1
cdq
mov esi, eax
mov eax, dword [esp + 0x3c]
xor esi, edx
sub esi, edx
mov edx, eax
sar edx, 8
sub esi, edx
add eax, esi
mov dword [esp + 0x3c], eax
mov eax, ecx
cdq
mov esi, eax
mov eax, dword [esp + 0x40]
xor esi, edx
sub esi, edx
mov edx, eax
sar edx, 8
sub esi, edx
add eax, esi
mov dword [esp + 0x40], eax
mov eax, ebp
cdq
mov esi, eax
mov eax, dword [esp + 0x48]
xor esi, edx
sub esi, edx
mov edx, eax
sar edx, 8
sub esi, edx
mov edx, dword [esp + 0x68]
add eax, esi
mov esi, dword [esp + 0x6c]
imul esi, dword [esp + 0x7c]
mov dword [esp + 0x48], eax
mov eax, edx
imul eax, dword [esp + 0x74]
sub eax, 0xffffff80
sub esi, 0xffffff80
sar eax, 8
add eax, ecx
add eax, dword [esp + 0x70]
sar esi, 8
add esi, ebp
add esi, dword [esp + 0x78]
xor ebx, ebx
test ecx, ecx
setg bl
xor ecx, ecx
cmp dword [esp + 0x74], ecx
setge cl
cmp ecx, ebx
mov ecx, edx
jne 0x43b3ab
inc edx
mov dword [esp + 0x68], edx
cmp ecx, 0x100
jne 0x43b3b8
mov dword [esp + 0x68], ecx
jmp 0x43b3b8
dec edx
mov dword [esp + 0x68], edx
test ecx, ecx
jne 0x43b3b8
mov dword [esp + 0x68], ecx
xor edx, edx
test ebp, ebp
setg dl
xor ecx, ecx
cmp dword [esp + 0x7c], ecx
setge cl
cmp ecx, edx
mov ecx, dword [esp + 0x6c]
mov edx, ecx
jne 0x43b3e5
inc ecx
mov dword [esp + 0x6c], ecx
cmp edx, 0x100
jne 0x43b3f2
mov dword [esp + 0x6c], edx
jmp 0x43b3f2
dec ecx
mov dword [esp + 0x6c], ecx
test edx, edx
jne 0x43b3f2
mov dword [esp + 0x6c], edx
mov ebx, dword [esp + 0x70]
mov ebp, dword [esp + 0x78]
sub eax, ebx
sub esi, ebp
add ebx, eax
add ebp, esi
test byte [esp + 0x28], 0x40
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], ebx
mov dword [esp + 0x7c], esi
mov dword [esp + 0x78], ebp
je 0x43b538
mov esi, 8
cmp dword [edi + 0x8a0], esi
jl 0x43b46e
mov eax, dword [edi + 0x48]
test eax, eax
je 0x43b43a
dec eax
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x3c]
jmp 0x43b460
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43b450
lea eax, [edi + 0x24]
push eax
mov eax, dword [eax]
call eax
add esp, 4
mov ecx, dword [edi + 0x30]
mov dword [edi + 0x48], 7
movzx eax, byte [ecx]
mov dword [edi + 0x3c], eax
shr dword [edi + 0x3c], 1
and eax, 1
test eax, eax
jne 0x43b4f6
cmp dword [edi + 0x48], esi
jge 0x43b4a1
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x43b48a
mov edx, dword [edi + 0x24]
lea eax, [edi + 0x24]
push eax
call edx
add esp, 4
mov eax, dword [edi + 0x30]
movzx edx, byte [eax]
mov ecx, dword [edi + 0x48]
shl edx, cl
add ecx, esi
mov dword [edi + 0x48], ecx
or dword [edi + 0x3c], edx
cmp ecx, esi
jl 0x43b473
mov eax, dword [edi + 0x48]
cmp eax, 0x20
mov edx, dword [edi + 0x3c]
jle 0x43b4c6
mov ecx, dword [edi + 0x30]
add eax, 0xfffffff8
mov dword [edi + 0x48], eax
movzx esi, byte [ecx]
mov ecx, 8
sub cl, al
shr esi, cl
mov dword [edi + 0x3c], esi
jmp 0x43b4d0
add eax, 0xfffffff8
shr dword [edi + 0x3c], 8
mov dword [edi + 0x48], eax
and edx, 0xff
cmp edx, dword [edi + 0x89c]
je 0x43b4f0
mov dword [edi + 0x89c], edx
mov dword [edi + 0x8a0], 0
jmp 0x43b4f6
inc dword [edi + 0x8a0]
mov eax, dword [edi + 0x89c]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
sar eax, 4
shl ebx, 4
add eax, ebx
mov dword [edx], eax
mov ecx, dword [edi + 0x89c]
and ecx, 0xf
shl ebp, 4
add ecx, ebp
add edx, 4
lea eax, [eax + esi*2]
add eax, esi
mov dword [edx], ecx
lea ecx, [ecx + eax*2]
add ecx, eax
add edx, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], edx
jmp 0x43b567
mov ecx, dword [esp + 0x1c]
lea eax, [ebx + ecx*2]
add eax, ecx
mov ecx, dword [esp + 0x34]
lea edx, [ebp + eax*2]
add edx, eax
mov eax, dword [esp + 0x18]
shl ebx, cl
shl ebp, cl
add eax, 4
add eax, 4
mov dword [eax - 8], ebx
mov dword [eax - 4], ebp
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43b2a0
jmp 0x43aadc
mov ebx, dword [esp + 0x28]
cmp ax, 3
jne 0x43bed0
cmp si, cx
je 0x43b8fd
test bl, 1
je 0x43b8fd
mov dword [esp + 0x14], ecx
test bl, 2
je 0x43b653
mov ebx, dword [esp + 0x88]
cmp edx, ecx
jbe 0x43c0b3
mov edi, edi
push 0
mov esi, edi
call fcn.0043ce10
cmp eax, 0x80000000
je 0x43c0b3
mov ecx, dword [esp + 0x74]
add ecx, eax
mov eax, dword [esp + 0x70]
add eax, ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
lea edx, [eax + ecx*2]
add edx, ecx
cmp eax, dword [esp + 0x48]
mov dword [esp + 0x70], eax
mov dword [esp + 0x1c], edx
jge 0x43b611
mov ecx, dword [esp + 0x24]
neg ecx
cmp eax, ecx
jge 0x43b60d
mov dword [esp + 0x20], 1
mov dword [ebx], ebp
jmp 0x43b635
cmp eax, dword [esp + 0x3c]
jle 0x43b62d
cmp eax, dword [esp + 0x24]
jle 0x43b625
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x44]
mov dword [ebx], edx
jmp 0x43b635
mov ecx, dword [esp + 0x34]
shl eax, cl
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
inc eax
add ebx, 4
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43b5c0
jmp 0x43c0b3
test ebx, 0x410
je 0x43b800
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x18], ebx
cmp edx, ecx
jbe 0x43c0b3
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x5c]
and eax, 0x400
mov dword [esp + 0x4c], eax
cmp dword [esp + 0x4c], 0
mov esi, edi
je 0x43b69e
lea eax, [esp + 0x5c]
push eax
push 0
call fcn.0043d090
mov ebp, dword [esp + 0x5c]
jmp 0x43b6a5
push 0
call fcn.0043ce10
cmp eax, 0x80000000
je 0x43c0b3
mov edx, dword [edi + 0x80]
mov esi, dword [esp + 0x38]
lea ecx, [edi + 0x8cc]
test edx, edx
je 0x43b749
mov esi, dword [ecx + esi*4 + 0x10]
mov ebx, dword [ecx + 8]
dec edx
mov dword [esp + 0x30], edx
mov edx, esi
sar edx, 7
and edx, 0xfffffe00
mov ebp, esi
imul edx, ebx
and ebp, 0xffff
imul ebp, ebx
sar ebp, 7
lea edx, [edx + ebp + 1]
sar edx, 1
add edx, eax
test esi, esi
je 0x43b725
test eax, eax
je 0x43b725
xor esi, eax
jl 0x43b715
lea eax, [ebx + 1]
mov dword [ecx + 8], eax
cmp ebx, 0x100
jne 0x43b725
dec eax
jmp 0x43b722
lea eax, [ebx - 1]
mov dword [ecx + 8], eax
cmp ebx, dword [esp + 0x2c]
jne 0x43b725
inc eax
mov dword [ecx + 8], eax
mov ebx, dword [ecx]
mov esi, dword [esp + 0x38]
add ebx, esi
and ebx, 7
mov dword [ecx + ebx*4 + 0x10], edx
mov eax, edx
mov edx, dword [esp + 0x30]
add ecx, 0x60
test edx, edx
jne 0x43b6c8
mov ebp, dword [esp + 0x5c]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
inc esi
and esi, 7
mov dword [esp + 0x38], esi
test cl, cl
jns 0x43b7b9
test ecx, 0x100
je 0x43b780
mov ecx, dword [edi + 0x8a8]
add ecx, ebp
add eax, ecx
mov ecx, dword [esp + 0x1c]
lea edx, [eax + ecx*2]
add edx, ecx
mov ecx, ebp
neg ecx
mov dword [edi + 0x8a8], ecx
jmp 0x43b78b
mov ecx, dword [esp + 0x1c]
add eax, ebp
lea edx, [eax + ecx*2]
add edx, ecx
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x34]
shl eax, cl
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
inc eax
add ebx, 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43b683
jmp 0x43c0b3
mov ecx, dword [esp + 0x1c]
lea edx, [eax + ecx*2]
add edx, ecx
cmp eax, dword [esp + 0x48]
mov dword [esp + 0x1c], edx
jge 0x43b7e6
mov ecx, dword [esp + 0x24]
neg ecx
cmp eax, ecx
jge 0x43b7de
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x40]
mov dword [ebx], edx
jmp 0x43b797
cmp eax, dword [esp + 0x3c]
jle 0x43b78f
cmp eax, dword [esp + 0x24]
jle 0x43b7fa
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x44]
jmp 0x43b795
mov eax, dword [esp + 0x88]
mov dword [esp + 0x18], eax
cmp edx, ecx
jbe 0x43c0b3
push 0
mov esi, edi
call fcn.0043ce10
mov esi, eax
cmp esi, 0x80000000
je 0x43c0b3
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov edx, ebp
imul edx, eax
sub edx, 0xffffff80
sar edx, 8
add edx, ecx
xor ebx, ebx
add edx, esi
test eax, eax
setge bl
xor eax, eax
test esi, esi
setg al
cmp ebx, eax
mov eax, ebp
jne 0x43b86b
inc ebp
mov dword [esp + 0x68], ebp
cmp eax, 0x100
jne 0x43b878
mov dword [esp + 0x68], eax
jmp 0x43b878
dec ebp
mov dword [esp + 0x68], ebp
test eax, eax
jne 0x43b878
mov dword [esp + 0x68], eax
mov eax, edx
sub eax, ecx
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x1c]
lea ecx, [edx + eax*2]
add ecx, eax
cmp edx, dword [esp + 0x48]
mov dword [esp + 0x70], edx
mov dword [esp + 0x1c], ecx
jge 0x43b8b5
mov eax, dword [esp + 0x24]
neg eax
cmp edx, eax
jge 0x43b8a9
mov dword [esp + 0x20], 1
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x18]
mov dword [eax], ecx
jmp 0x43b8db
cmp edx, dword [esp + 0x3c]
jle 0x43b8cf
cmp edx, dword [esp + 0x24]
jle 0x43b8c9
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x44]
jmp 0x43b8d5
mov ecx, dword [esp + 0x34]
shl edx, cl
mov eax, dword [esp + 0x18]
mov dword [eax], edx
add eax, 4
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43b813
jmp 0x43c0b3
cmp ax, 3
jne 0x43bed0
cmp si, cx
je 0x43bed0
test bl, 1
jne 0x43bed0
test bl, 2
je 0x43ba33
mov ebp, dword [esp + 0x88]
mov dword [esp + 0x14], ecx
cmp edx, ecx
jbe 0x43c0b3
push 0
mov esi, edi
call fcn.0043ce10
cmp eax, 0x80000000
je 0x43c0b3
mov ecx, dword [esp + 0x74]
add ecx, eax
mov eax, dword [esp + 0x70]
add eax, ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
lea ebx, [eax + ecx*2]
add ebx, ecx
cmp eax, dword [esp + 0x48]
mov dword [esp + 0x70], eax
jge 0x43b987
mov ecx, dword [esp + 0x24]
neg ecx
cmp eax, ecx
jge 0x43b97e
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x40]
mov dword [ebp], edx
jmp 0x43b9aa
cmp eax, dword [esp + 0x3c]
jle 0x43b9a1
cmp eax, dword [esp + 0x24]
jle 0x43b99b
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x44]
jmp 0x43b9a7
mov ecx, dword [esp + 0x34]
shl eax, cl
mov dword [ebp], eax
push 1
add ebp, 4
call fcn.0043ce10
mov ecx, dword [esp + 0x7c]
add ecx, eax
mov eax, dword [esp + 0x78]
add eax, ecx
mov dword [esp + 0x7c], ecx
lea ecx, [eax + ebx*2]
add ecx, ebx
cmp eax, dword [esp + 0x48]
mov dword [esp + 0x78], eax
mov dword [esp + 0x1c], ecx
jge 0x43b9f2
mov ecx, dword [esp + 0x24]
neg ecx
cmp eax, ecx
jge 0x43b9e9
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x40]
mov dword [ebp], edx
jmp 0x43ba15
cmp eax, dword [esp + 0x3c]
jle 0x43ba0c
cmp eax, dword [esp + 0x24]
jle 0x43ba06
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x44]
jmp 0x43ba12
mov ecx, dword [esp + 0x34]
shl eax, cl
mov dword [ebp], eax
mov eax, dword [esp + 0x14]
inc eax
add ebp, 4
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43b935
jmp 0x43c0b3
test ebx, 0x410
je 0x43bd1c
cmp dword [esp + 0x8c], 0
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], 0
jbe 0x43c0b3
mov eax, dword [esp + 0x28]
and eax, 0x400
mov dword [esp + 0x4c], eax
jmp 0x43ba74
mov eax, dword [esp + 0x4c]
mov esi, edi
test eax, eax
je 0x43ba9a
lea ecx, [esp + 0x5c]
push ecx
push 0
call fcn.0043d090
lea edx, [esp + 0x60]
push edx
mov ebp, eax
push 1
mov dword [esp + 0x5c], ebp
call fcn.0043d090
jmp 0x43baae
push 0
call fcn.0043ce10
mov ebp, eax
push 1
mov dword [esp + 0x58], ebp
call fcn.0043ce10
mov dword [esp + 0x50], eax
cmp ebp, 0x80000000
je 0x43c0b3
mov edx, dword [edi + 0x80]
lea ecx, [edi + 0x8cc]
test edx, edx
je 0x43bbc7
mov eax, dword [esp + 0x38]
mov esi, dword [ecx + eax*4 + 0x10]
mov ebp, dword [ecx]
dec edx
mov dword [esp + 0x30], edx
mov edx, dword [ecx + eax*4 + 0x30]
mov dword [esp + 0x64], edx
add ebp, eax
mov eax, dword [ecx + 8]
mov edx, esi
sar edx, 7
and edx, 0xfffffe00
mov ebx, esi
imul edx, eax
and ebx, 0xffff
imul ebx, eax
sar ebx, 7
lea edx, [edx + ebx + 1]
mov ebx, dword [esp + 0x54]
sar edx, 1
and ebp, 7
add edx, ebx
test esi, esi
je 0x43bb45
test ebx, ebx
je 0x43bb45
xor esi, ebx
jl 0x43bb35
lea esi, [eax + 1]
mov dword [ecx + 8], esi
cmp eax, 0x100
jne 0x43bb45
dec esi
jmp 0x43bb42
lea esi, [eax - 1]
mov dword [ecx + 8], esi
cmp eax, dword [esp + 0x2c]
jne 0x43bb45
inc esi
mov dword [ecx + 8], esi
mov esi, dword [esp + 0x64]
mov eax, esi
sar eax, 7
and eax, 0xfffffe00
mov ebx, esi
and ebx, 0xffff
mov dword [esp + 0x54], edx
mov dword [ecx + ebp*4 + 0x10], edx
mov edx, dword [ecx + 0xc]
imul ebx, edx
imul eax, edx
sar ebx, 7
lea eax, [eax + ebx + 1]
mov ebx, dword [esp + 0x50]
sar eax, 1
add eax, ebx
test esi, esi
je 0x43bba8
test ebx, ebx
je 0x43bba8
xor esi, ebx
jl 0x43bb98
lea esi, [edx + 1]
mov dword [ecx + 0xc], esi
cmp edx, 0x100
jne 0x43bba8
dec esi
jmp 0x43bba5
lea esi, [edx - 1]
mov dword [ecx + 0xc], esi
cmp edx, dword [esp + 0x2c]
jne 0x43bba8
inc esi
mov dword [ecx + 0xc], esi
mov edx, dword [esp + 0x30]
mov dword [ecx + ebp*4 + 0x30], eax
add ecx, 0x60
mov dword [esp + 0x50], eax
test edx, edx
jne 0x43bad2
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x54]
mov ecx, dword [esp + 0x38]
inc ecx
and ecx, 7
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x28]
mov esi, ecx
and esi, 0x80
mov dword [esp + 0x64], esi
je 0x43bc2b
test ecx, 0x100
je 0x43bc23
mov ecx, dword [edi + 0x8a8]
mov edx, dword [esp + 0x5c]
mov esi, dword [edi + 0x8ac]
add ecx, edx
add ebp, ecx
mov ecx, dword [esp + 0x60]
add esi, ecx
add eax, esi
mov esi, dword [esp + 0x64]
neg edx
neg ecx
mov dword [edi + 0x8ac], ecx
mov ecx, dword [esp + 0x28]
mov dword [edi + 0x8a8], edx
jmp 0x43bc2b
add ebp, dword [esp + 0x5c]
add eax, dword [esp + 0x60]
test ecx, 0x4000
je 0x43bc47
mov edx, ebp
lea ecx, [eax + eax]
and edx, 1
or ecx, edx
mov eax, ecx
sub eax, ebp
add ebp, ecx
sar eax, 1
sar ebp, 1
mov edx, dword [esp + 0x1c]
lea ecx, [ebp + edx*2]
add ecx, edx
lea edx, [eax + ecx*2]
add edx, ecx
mov dword [esp + 0x1c], edx
test esi, esi
je 0x43bc6f
mov ecx, dword [esp + 0x34]
shl ebp, cl
add ebx, 4
mov dword [ebx - 4], ebp
jmp 0x43bcf6
mov edx, dword [esp + 0x48]
cmp ebp, edx
jge 0x43bc93
mov ecx, dword [esp + 0x24]
mov esi, ecx
neg esi
cmp ebp, esi
jge 0x43bc8b
mov dword [esp + 0x20], 1
mov esi, dword [esp + 0x40]
mov dword [ebx], esi
jmp 0x43bcbd
cmp ebp, dword [esp + 0x3c]
jle 0x43bcb1
mov ecx, dword [esp + 0x24]
cmp ebp, ecx
jle 0x43bca9
mov dword [esp + 0x20], 1
mov esi, dword [esp + 0x44]
mov dword [ebx], esi
jmp 0x43bcbd
mov ecx, dword [esp + 0x34]
shl ebp, cl
mov ecx, dword [esp + 0x24]
mov dword [ebx], ebp
add ebx, 4
cmp eax, edx
jge 0x43bcd8
neg ecx
cmp eax, ecx
jge 0x43bcd2
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x40]
jmp 0x43bcf8
cmp eax, dword [esp + 0x3c]
jle 0x43bcf2
cmp eax, ecx
jle 0x43bcea
mov dword [esp + 0x20], 1
mov ecx, dword [esp + 0x44]
mov dword [ebx], ecx
jmp 0x43bcfa
mov ecx, dword [esp + 0x34]
shl eax, cl
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
inc eax
add ebx, 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43ba70
jmp 0x43c0b3
mov eax, dword [esp + 0x88]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
cmp edx, ecx
jbe 0x43c0b3
push 0
mov esi, edi
call fcn.0043ce10
mov esi, eax
cmp esi, 0x80000000
je 0x43c0b3
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x74]
mov ecx, ebp
imul ecx, eax
sub ecx, 0xffffff80
sar ecx, 8
add ecx, dword [esp + 0x70]
xor edx, edx
add ecx, esi
test eax, eax
setge dl
xor eax, eax
test esi, esi
setg al
cmp edx, eax
jne 0x43bd8a
mov edx, ebp
inc ebp
mov dword [esp + 0x68], ebp
cmp edx, 0x100
jne 0x43bd99
mov dword [esp + 0x68], edx
jmp 0x43bd99
mov eax, ebp
dec ebp
mov dword [esp + 0x68], ebp
test eax, eax
jne 0x43bd99
mov dword [esp + 0x68], eax
mov eax, ecx
sub eax, dword [esp + 0x70]
mov ebx, ecx
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x1c]
lea ebp, [ecx + eax*2]
push 1
mov esi, edi
mov dword [esp + 0x74], ebx
add ebp, eax
call fcn.0043ce10
mov edx, dword [esp + 0x6c]
mov esi, eax
mov eax, dword [esp + 0x7c]
imul edx, eax
sub edx, 0xffffff80
sar edx, 8
add edx, dword [esp + 0x78]
xor ecx, ecx
add edx, esi
test eax, eax
setge cl
xor eax, eax
test esi, esi
setg al
cmp ecx, eax
mov eax, dword [esp + 0x6c]
mov ecx, eax
jne 0x43bdff
inc eax
mov dword [esp + 0x6c], eax
cmp ecx, 0x100
jne 0x43be0c
mov dword [esp + 0x6c], ecx
jmp 0x43be0c
dec eax
mov dword [esp + 0x6c], eax
test ecx, ecx
jne 0x43be0c
mov dword [esp + 0x6c], ecx
mov esi, dword [esp + 0x48]
mov eax, edx
sub eax, dword [esp + 0x78]
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], eax
lea eax, [edx + ebp*2]
add eax, ebp
cmp ebx, esi
mov dword [esp + 0x1c], eax
jge 0x43be45
mov ecx, dword [esp + 0x24]
mov eax, ecx
neg eax
cmp ebx, eax
jge 0x43be3f
mov dword [esp + 0x20], 1
mov ebx, dword [esp + 0x40]
jmp 0x43be6b
cmp ebx, dword [esp + 0x3c]
jle 0x43be61
mov ecx, dword [esp + 0x24]
cmp ebx, ecx
jle 0x43be5b
mov dword [esp + 0x20], 1
mov ebx, dword [esp + 0x44]
jmp 0x43be6b
mov ecx, dword [esp + 0x34]
shl ebx, cl
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
mov dword [eax], ebx
add eax, 4
cmp edx, esi
jge 0x43be8e
neg ecx
cmp edx, ecx
jge 0x43be86
mov dword [esp + 0x20], 1
mov ecx, dword [esp + 0x40]
mov dword [eax], ecx
jmp 0x43beae
cmp edx, dword [esp + 0x3c]
jle 0x43bea6
cmp edx, ecx
jle 0x43bea0
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x44]
jmp 0x43beac
mov ecx, dword [esp + 0x34]
shl edx, cl
mov dword [eax], edx
add eax, 4
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43bd33
jmp 0x43c0b3
cmp ax, 2
jne 0x43bf8c
test bl, 1
je 0x43bf8c
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x14], ecx
cmp edx, ecx
jbe 0x43c0b3
mov ebp, dword [esp + 0x48]
lea ebx, [ebx]
xor eax, eax
mov esi, edi
call fcn.0043cbf0
cmp eax, 0x80000000
je 0x43c0b3
mov ecx, dword [esp + 0x74]
add ecx, eax
mov eax, dword [esp + 0x70]
add eax, ecx
cmp word [edi + 0xa], 0
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], eax
je 0x43bf65
cmp eax, ebp
jge 0x43bf49
mov ecx, dword [esp + 0x24]
neg ecx
cmp eax, ecx
jge 0x43bf45
mov dword [esp + 0x20], 1
mov eax, ebp
jmp 0x43bf61
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
jle 0x43bf65
cmp eax, dword [esp + 0x24]
jle 0x43bf5f
mov dword [esp + 0x20], 1
mov eax, ecx
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x34]
shl eax, cl
add ebx, 4
mov dword [ebx - 4], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43bf00
jmp 0x43c0b3
cmp ax, 3
jge 0x43c0af
test bl, 1
jne 0x43c0af
mov ebp, dword [esp + 0x88]
mov dword [esp + 0x14], ecx
cmp edx, ecx
jbe 0x43c0b3
xor eax, eax
mov esi, edi
call fcn.0043cbf0
mov ebx, eax
cmp ebx, 0x80000000
je 0x43c0b3
mov eax, 1
call fcn.0043cbf0
mov esi, dword [esp + 0x74]
mov ecx, eax
and ecx, 1
lea edx, [ebx + ebx]
or ecx, edx
lea edx, [eax + ecx]
sar edx, 1
add esi, edx
mov edx, dword [esp + 0x70]
sub ecx, eax
mov eax, dword [esp + 0x78]
add edx, esi
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x7c]
sar ecx, 1
add esi, ecx
add eax, esi
cmp word [edi + 0xa], 0
mov dword [esp + 0x70], edx
mov dword [esp + 0x7c], esi
mov dword [esp + 0x78], eax
je 0x43c083
mov ebx, dword [esp + 0x48]
cmp edx, ebx
mov ecx, dword [esp + 0x24]
jge 0x43c03d
mov esi, ecx
neg esi
cmp edx, esi
jge 0x43c035
mov dword [esp + 0x20], 1
mov esi, dword [esp + 0x3c]
mov edx, ebx
jmp 0x43c053
mov esi, dword [esp + 0x3c]
cmp edx, esi
jle 0x43c057
cmp edx, ecx
jle 0x43c051
mov dword [esp + 0x20], 1
mov edx, esi
mov dword [esp + 0x70], edx
cmp eax, ebx
jge 0x43c06d
neg ecx
cmp eax, ecx
jge 0x43c069
mov dword [esp + 0x20], 1
mov eax, ebx
jmp 0x43c07f
cmp eax, esi
jle 0x43c083
cmp eax, ecx
jle 0x43c07d
mov dword [esp + 0x20], 1
mov eax, esi
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x34]
shl edx, cl
shl eax, cl
add ebp, 4
add ebp, 4
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x8c]
jb 0x43bfb2
jmp 0x43c0b3
mov dword [esp + 0x14], ecx
cmp word [edi + 0xa], 0
je 0x43c0c1
test byte [esp + 0x28], 0x80
je 0x43c104
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x88]
and al, 1
movsx ecx, al
neg ecx
sbb ecx, ecx
add ecx, 2
imul ecx, dword [esp + 0x8c]
lea esi, [edx + ecx*4]
mov eax, edx
cmp edx, esi
jae 0x43c10b
mov ebx, dword [esp + 0x24]
mov ecx, dword [eax]
cmp ecx, ebx
jg 0x43c112
mov ebp, ebx
neg ebp
cmp ecx, ebp
jl 0x43c112
add eax, 0xc
cmp eax, esi
jb 0x43c0ed
jmp 0x43c10b
mov edx, dword [esp + 0x88]
cmp dword [esp + 0x20], 0
je 0x43c13a
mov al, byte [esp + 0x28]
and al, 1
movsx eax, al
neg eax
sbb eax, eax
add eax, 2
imul eax, dword [esp + 0x8c]
add eax, eax
add eax, eax
push eax
push 0
push edx
call fcn.0044d300
add esp, 0xc
mov eax, dword [esp + 0x14]
test eax, eax
je 0x43c31d
add dword [edi + 0x7c], eax
mov eax, dword [edi + 0x7c]
mov esi, dword [esp + 0x84]
cmp eax, dword [esi + 0x8c]
jne 0x43c31d
cmp word [edi + 8], 3
jne 0x43c18a
cmp dword [esi + 0x98], 0
je 0x43c174
mov eax, dword [edi + 0x18]
jmp 0x43c177
mov eax, dword [edi + 0x14]
mov ebx, 1
cmp dword [esp + 0x1c], eax
je 0x43c18f
add dword [esi + 0x90], ebx
jmp 0x43c18f
mov ebx, 1
test byte [esi + 0x9c], 4
je 0x43c31d
push 0x400
call fcn.0044bdab
mov ebp, eax
mov eax, dword [edi + 0x48]
add esp, 4
cmp eax, 8
jge 0x43c1bc
add eax, 8
add dword [edi + 0x30], ebx
mov dword [edi + 0x48], eax
mov ecx, dword [edi + 0x2c]
sub ecx, dword [edi + 0x30]
je 0x43c24a
mov eax, dword [edi + 0x48]
cmp eax, 8
jge 0x43c1d9
add eax, 8
add dword [edi + 0x30], ebx
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x2c]
sub eax, dword [edi + 0x30]
mov edx, dword [esi + 0x60]
add edx, eax
mov eax, dword [esi + 0x5c]
push edx
push eax
call fcn.0045ab0f
mov dword [esi + 0x5c], eax
mov eax, dword [edi + 0x48]
add esp, 8
cmp eax, 8
jge 0x43c205
add eax, 8
add dword [edi + 0x30], ebx
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x2c]
mov ecx, dword [edi + 0x48]
sub eax, dword [edi + 0x30]
cmp ecx, 8
jge 0x43c21c
add ecx, 8
add dword [edi + 0x30], ebx
mov dword [edi + 0x48], ecx
mov edx, dword [esi + 0x60]
mov ecx, dword [edi + 0x30]
add edx, dword [esi + 0x5c]
push eax
push ecx
push edx
call fcn.0044dd10
mov eax, dword [edi + 0x48]
add esp, 0xc
cmp eax, 8
jge 0x43c241
add eax, 8
add dword [edi + 0x30], ebx
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x2c]
sub eax, dword [edi + 0x30]
add dword [esi + 0x60], eax
mov ecx, dword [esi + 0x70]
mov edx, dword [esi + 0x74]
mov eax, dword [ecx]
push 4
push ebp
push edx
call eax
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x43c29a
mov ecx, dword [esi + 0x60]
mov edx, dword [esi + 0x5c]
add ecx, ebx
push ecx
push edx
call fcn.0045ab0f
mov ecx, dword [esi + 0x60]
push ebx
add ecx, eax
push ebp
push ecx
mov dword [esi + 0x5c], eax
call fcn.0044dd10
add dword [esi + 0x60], ebx
mov edx, dword [esi + 0x70]
mov eax, dword [esi + 0x74]
mov ecx, dword [edx]
push 4
push ebp
push eax
call ecx
mov ebx, eax
add esp, 0x20
test ebx, ebx
jne 0x43c261
push ebp
call fcn.0044be75
mov edx, dword [esi + 0x60]
add esp, 4
cmp edx, 0x10
jbe 0x43c31d
mov eax, dword [esi + 0x5c]
xor ebx, ebx
xor ecx, ecx
add eax, 2
lea esp, [esp]
cmp byte [eax - 2], 0xff
jne 0x43c2ef
cmp byte [eax - 1], 0xff
jne 0x43c2e4
cmp byte [eax], 0xff
jne 0x43c2e7
cmp byte [eax + 1], 0xff
jne 0x43c2ec
add ecx, 4
add eax, 4
cmp ecx, 0x10
jl 0x43c2c0
jmp 0x43c2ef
inc ecx
jmp 0x43c2ef
add ecx, 2
jmp 0x43c2ef
add ecx, 3
mov eax, dword [esi + 0x5c]
cmp ecx, 0x10
jne 0x43c30e
add edx, 0xfffffff0
push edx
lea edx, [eax + 0x10]
push edx
push eax
call fcn.0044dd10
add esp, 0xc
add dword [esi + 0x60], 0xfffffff0
jmp 0x43c31d
push eax
call fcn.0044be75
add esp, 4
mov dword [esi + 0x5c], ebx
mov dword [esi + 0x60], ebx
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x78]
mov dword [edi + 0x8b4], ecx
mov ecx, dword [esp + 0x7c]
mov dword [edi + 0x8b8], edx
mov edx, dword [esp + 0x68]
mov dword [edi + 0x8bc], eax
mov eax, dword [esp + 0x6c]
mov dword [edi + 0x8c0], ecx
mov ecx, dword [esp + 0x1c]
mov dword [edi + 0x8c4], edx
mov edx, dword [esp + 0x38]
mov dword [edi + 0x8c8], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x8b0], ecx
mov dword [edi + 0x8a4], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret