Function at 0x444200
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x84
push edi
mov edi, dword [esp + 0x98]
cmp edi, 0xa
jae 0x444220
mov eax, 0xffffffec
pop edi
add esp, 0x84
ret
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
movzx edx, word [ecx + 4]
push ebx
mov ebx, dword [esp + 0x90]
add eax, ebx
add ecx, 6
mov dword [esp + 0x28], eax
add eax, 0xfffffffd
mov dword [esp + 0x1c], ecx
push ebp
movzx ebp, word [ecx - 4]
mov dword [esp + 0xc], eax
movzx eax, word [ecx - 6]
add ecx, eax
mov dword [esp + 0x8c], ecx
add ecx, ebp
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x98]
sub edi, edx
add ecx, 3
shr ecx, 2
mov dword [esp + 0x88], edx
lea edx, [ecx + ebx]
mov dword [esp + 0x58], edx
add edx, ecx
add ecx, edx
push esi
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x60], edx
mov dword [esp + 0x20], edx
mov edx, dword [esi]
sub edi, ebp
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x5c]
shr edx, 0x10
sub edi, eax
movzx edx, dl
sub edi, 6
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
cmp edi, dword [esp + 0xa4]
ja 0x44458d
cmp ecx, dword [esp + 0x30]
ja 0x44458d
cmp dword [esp + 0x9c], 6
jb 0x44458d
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x78]
push ecx
call fcn.004417a0
add esp, 4
cmp eax, 0xffffff88
ja 0x4450d7
lea edx, [esp + 0x64]
push edx
mov edx, dword [esp + 0x94]
mov eax, ebp
call fcn.004417a0
add esp, 4
cmp eax, 0xffffff88
ja 0x4450d7
mov ebp, dword [esp + 0x8c]
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x48]
push eax
mov eax, ebp
call fcn.004417a0
add esp, 4
cmp eax, 0xffffff88
ja 0x4450d7
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x34]
push eax
lea edx, [ecx + ebp]
mov eax, edi
call fcn.004417a0
add esp, 4
cmp eax, 0xffffff88
ja 0x4450d7
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x2c]
cmp ecx, 4
jb 0x444571
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x2c], edx
sbb eax, eax
neg eax
test al, 1
je 0x444571
mov edi, dword [esp + 0x14]
neg edi
and edi, 0x1f
lea esp, [esp]
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
mov ecx, ebp
and ecx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, edi
shr eax, cl
movzx ecx, word [esi + eax*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + eax*4 + 6]
movzx eax, byte [esi + eax*4 + 7]
add ebp, ecx
mov ecx, dword [esp + 0x68]
and ecx, 0x1f
add ebx, eax
mov dword [esp + 0x7c], ebp
mov ebp, dword [esp + 0x64]
mov eax, ebp
shl eax, cl
mov ecx, edi
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x1c]
shr eax, cl
movzx ecx, word [esi + eax*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + eax*4 + 6]
add dword [esp + 0x68], ecx
movzx eax, byte [esi + eax*4 + 7]
add dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x20]
and ecx, 0x1f
shl eax, cl
mov ecx, edi
shr eax, cl
movzx ecx, word [esi + eax*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + eax*4 + 6]
add dword [esp + 0x4c], ecx
movzx eax, byte [esi + eax*4 + 7]
add dword [esp + 0x20], eax
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x18]
and ecx, 0x1f
shl eax, cl
mov ecx, edi
shr eax, cl
movzx ecx, word [esi + eax*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + eax*4 + 6]
movzx eax, byte [esi + eax*4 + 7]
add dword [esp + 0x38], ecx
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x10]
mov ecx, eax
and ecx, 0x1f
shl edx, cl
mov ecx, edi
shr edx, cl
movzx ecx, word [esi + edx*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edx*4 + 6]
movzx edx, byte [esi + edx*4 + 7]
add eax, ecx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x68]
mov ecx, eax
and ecx, 0x1f
shl ebp, cl
mov ecx, edi
add ebx, edx
shr ebp, cl
mov ecx, dword [esp + 0x1c]
mov dx, word [esi + ebp*4 + 4]
mov word [ecx], dx
movzx edx, byte [esi + ebp*4 + 6]
add eax, edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x68], eax
movzx eax, byte [esi + ebp*4 + 7]
add ecx, eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
mov ecx, eax
and ecx, 0x1f
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x20]
mov bp, word [esi + edx*4 + 4]
mov word [ecx], bp
movzx ebp, byte [esi + edx*4 + 6]
movzx edx, byte [esi + edx*4 + 7]
add ecx, edx
mov edx, dword [esp + 0x34]
add eax, ebp
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x20], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, edi
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x18]
shr edx, cl
movzx ecx, word [esi + edx*4 + 4]
mov word [eax], cx
movzx ecx, byte [esi + edx*4 + 6]
movzx edx, byte [esi + edx*4 + 7]
add eax, edx
add ebp, ecx
mov dword [esp + 0x18], eax
lea eax, [esp + 0x34]
mov dword [esp + 0x38], ebp
call fcn.004418c0
mov ebp, eax
neg ebp
sbb ebp, ebp
lea eax, [esp + 0x48]
inc ebp
call fcn.004418c0
neg eax
sbb eax, eax
inc eax
and ebp, eax
lea eax, [esp + 0x64]
call fcn.004418c0
neg eax
sbb eax, eax
inc eax
and ebp, eax
lea eax, [esp + 0x78]
call fcn.004418c0
neg eax
sbb eax, eax
inc eax
and ebp, eax
mov eax, dword [esp + 0x30]
add eax, 0xfffffffd
cmp dword [esp + 0x18], eax
sbb eax, eax
neg eax
test eax, ebp
jne 0x444390
mov edi, dword [esp + 0x5c]
cmp ebx, edi
ja 0x44458d
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x60]
ja 0x44458d
mov edx, dword [esp + 0x20]
cmp edx, dword [esp + 0x2c]
jbe 0x44459d
pop esi
pop ebp
pop ebx
mov eax, 0xffffffec
pop edi
add esp, 0x84
ret
mov edx, dword [esp + 0x80]
mov eax, edi
sub eax, ebx
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x84]
cmp eax, 4
mov eax, dword [esp + 0x7c]
jb 0x44469d
mov ebp, dword [esp + 0x78]
cmp eax, 0x20
jbe 0x4445d0
mov edi, 3
jmp 0x444616
cmp edx, dword [esp + 0x88]
jb 0x4445e7
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x444614
cmp edx, ebx
jne 0x4445f5
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x444616
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
xor edi, edi
cmp ebp, ebx
jae 0x44460d
mov ecx, edx
sub ecx, ebx
mov edi, 1
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x5c]
add ecx, 0xfffffffd
cmp dword [esp + 0x24], ecx
sbb ecx, ecx
xor ebx, ebx
neg ecx
test edi, edi
sete bl
test ebx, ecx
je 0x4446df
mov ebx, dword [esp + 0x14]
mov ecx, eax
and ecx, 0x1f
neg ebx
and ebx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, ebx
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x24]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
add ebx, ecx
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x28]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
add ebx, ecx
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x84]
jmp 0x4445c4
cmp eax, 0x20
ja 0x4446d9
cmp edx, dword [esp + 0x88]
jb 0x4446b9
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov ebp, dword [edx]
and eax, 7
jmp 0x4446ea
cmp edx, ebx
je 0x4446d9
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
cmp ebp, ebx
jae 0x4446ce
mov ecx, edx
sub ecx, ebx
sub edx, ecx
mov ebp, dword [edx]
neg ecx
lea eax, [eax + ecx*8]
jmp 0x4446ea
mov ebp, dword [esp + 0x78]
jmp 0x4446f9
mov ebx, dword [esp + 0x84]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x78], ebp
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], edx
sub edi, dword [esp + 0x24]
cmp edi, 2
jb 0x444811
cmp eax, 0x20
jbe 0x444712
mov edi, 3
jmp 0x444758
cmp edx, dword [esp + 0x88]
jb 0x444729
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x444756
cmp edx, ebx
jne 0x444737
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x444758
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
xor edi, edi
cmp ebp, ebx
jae 0x44474f
mov ecx, edx
sub ecx, ebx
mov edi, 1
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x5c]
add ecx, 0xfffffffe
cmp ecx, dword [esp + 0x24]
sbb ecx, ecx
xor ebx, ebx
inc ecx
test edi, edi
sete bl
test ebx, ecx
je 0x4447af
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr edi, cl
mov ecx, dword [esp + 0x24]
mov bx, word [esi + edi*4 + 4]
mov word [ecx], bx
movzx ebx, byte [esi + edi*4 + 6]
movzx edi, byte [esi + edi*4 + 7]
add eax, ebx
mov ebx, dword [esp + 0x84]
add ecx, edi
mov dword [esp + 0x24], ecx
jmp 0x444706
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x24]
add ecx, 0xfffffffe
mov dword [esp + 0x78], ebp
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], edx
mov dword [esp + 0x10], ecx
cmp edi, ecx
ja 0x444811
mov ebx, dword [esp + 0x14]
neg ebx
and ebx, 0x1f
lea ebx, [ebx]
mov ecx, eax
and ecx, 0x1f
mov edx, ebp
shl edx, cl
mov ecx, ebx
shr edx, cl
mov cx, word [esi + edx*4 + 4]
mov word [edi], cx
movzx ecx, byte [esi + edx*4 + 6]
movzx edx, byte [esi + edx*4 + 7]
add edi, edx
add eax, ecx
cmp edi, dword [esp + 0x10]
jbe 0x4447e0
mov dword [esp + 0x24], edi
mov dword [esp + 0x7c], eax
mov ecx, dword [esp + 0x24]
cmp ecx, dword [esp + 0x5c]
jae 0x444868
mov ecx, eax
and ecx, 0x1f
shl ebp, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr ebp, cl
mov ecx, dword [esp + 0x24]
mov dl, byte [esi + ebp*4 + 4]
mov byte [ecx], dl
cmp byte [esi + ebp*4 + 7], 1
jne 0x44484b
movzx edx, byte [esi + ebp*4 + 6]
add eax, edx
mov dword [esp + 0x7c], eax
jmp 0x444868
cmp eax, 0x20
jae 0x444868
movzx ecx, byte [esi + ebp*4 + 6]
add eax, ecx
mov dword [esp + 0x7c], eax
cmp eax, 0x20
jbe 0x444868
mov dword [esp + 0x7c], 0x20
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 0x68]
sub edx, ebx
cmp edx, 4
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x1c], ebx
jb 0x44496d
mov ebp, dword [esp + 0x64]
nop
cmp eax, 0x20
jbe 0x44489c
mov edi, 3
jmp 0x4448eb
cmp edx, dword [esp + 0x74]
jb 0x4448b0
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x4448e9
cmp edx, edi
jne 0x4448be
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x4448eb
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
mov dword [esp + 0x10], 0
cmp ebp, edi
jae 0x4448de
mov ecx, edx
sub ecx, edi
mov edi, 1
jmp 0x4448e2
mov edi, dword [esp + 0x10]
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x60]
add ecx, 0xfffffffd
cmp ebx, ecx
sbb ecx, ecx
xor ebx, ebx
neg ecx
test edi, edi
sete bl
test ebx, ecx
je 0x4449ac
mov ebx, dword [esp + 0x14]
mov ecx, eax
and ecx, 0x1f
neg ebx
and ebx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, ebx
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x1c]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
add ebx, ecx
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x28]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
mov edi, dword [esp + 0x70]
add ebx, ecx
mov dword [esp + 0x1c], ebx
jmp 0x444890
cmp eax, 0x20
ja 0x4449a6
cmp edx, dword [esp + 0x74]
jb 0x444986
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov ebp, dword [edx]
and eax, 7
jmp 0x4449b4
cmp edx, edi
je 0x4449a6
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
cmp ebp, edi
jae 0x44499b
mov ecx, edx
sub ecx, edi
sub edx, ecx
mov ebp, dword [edx]
neg ecx
lea eax, [eax + ecx*8]
jmp 0x4449b4
mov ebp, dword [esp + 0x64]
jmp 0x4449c0
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov ecx, dword [esp + 0x60]
sub ecx, ebx
cmp ecx, 2
jb 0x444ace
nop
cmp eax, 0x20
jbe 0x4449dc
mov edi, 3
jmp 0x444a2b
cmp edx, dword [esp + 0x74]
jb 0x4449f0
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x444a29
cmp edx, edi
jne 0x4449fe
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x444a2b
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
mov dword [esp + 0x10], 0
cmp ebp, edi
jae 0x444a1e
mov ecx, edx
sub ecx, edi
mov edi, 1
jmp 0x444a22
mov edi, dword [esp + 0x10]
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x60]
add ecx, 0xfffffffe
cmp ecx, ebx
sbb ecx, ecx
xor ebx, ebx
inc ecx
test edi, edi
sete bl
test ebx, ecx
mov ebx, dword [esp + 0x1c]
je 0x444a7d
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr edi, cl
mov cx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
mov edi, dword [esp + 0x70]
add ebx, ecx
mov dword [esp + 0x1c], ebx
jmp 0x4449d0
mov ecx, dword [esp + 0x60]
add ecx, 0xfffffffe
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov dword [esp + 0x10], ecx
cmp ebx, ecx
ja 0x444ace
mov edi, dword [esp + 0x14]
neg edi
and edi, 0x1f
mov ecx, eax
and ecx, 0x1f
mov edx, ebp
shl edx, cl
mov ecx, edi
shr edx, cl
mov cx, word [esi + edx*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edx*4 + 6]
movzx edx, byte [esi + edx*4 + 7]
add ebx, edx
add eax, ecx
cmp ebx, dword [esp + 0x10]
jbe 0x444aa1
mov dword [esp + 0x68], eax
cmp ebx, dword [esp + 0x60]
jae 0x444b1d
mov ecx, eax
and ecx, 0x1f
shl ebp, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr ebp, cl
mov cl, byte [esi + ebp*4 + 4]
mov byte [ebx], cl
cmp byte [esi + ebp*4 + 7], 1
jne 0x444b00
movzx edx, byte [esi + ebp*4 + 6]
add eax, edx
mov dword [esp + 0x68], eax
jmp 0x444b1d
cmp eax, 0x20
jae 0x444b1d
movzx ecx, byte [esi + ebp*4 + 6]
add eax, ecx
mov dword [esp + 0x68], eax
cmp eax, 0x20
jbe 0x444b1d
mov dword [esp + 0x68], 0x20
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x4c]
sub edx, ebx
cmp edx, 4
mov edx, dword [esp + 0x50]
mov dword [esp + 0x20], ebx
jb 0x444c21
mov ebp, dword [esp + 0x48]
cmp eax, 0x20
jbe 0x444b50
mov edi, 3
jmp 0x444b9f
cmp edx, dword [esp + 0x58]
jb 0x444b64
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x444b9d
cmp edx, edi
jne 0x444b72
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x444b9f
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
mov dword [esp + 0x10], 0
cmp ebp, edi
jae 0x444b92
mov ecx, edx
sub ecx, edi
mov edi, 1
jmp 0x444b96
mov edi, dword [esp + 0x10]
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffffd
cmp ebx, ecx
sbb ecx, ecx
xor ebx, ebx
neg ecx
test edi, edi
sete bl
test ebx, ecx
je 0x444c60
mov ebx, dword [esp + 0x14]
mov ecx, eax
and ecx, 0x1f
neg ebx
and ebx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, ebx
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x20]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
add ebx, ecx
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x28]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
mov edi, dword [esp + 0x54]
add ebx, ecx
mov dword [esp + 0x20], ebx
jmp 0x444b44
cmp eax, 0x20
ja 0x444c5a
cmp edx, dword [esp + 0x58]
jb 0x444c3a
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov ebp, dword [edx]
and eax, 7
jmp 0x444c68
cmp edx, edi
je 0x444c5a
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
cmp ebp, edi
jae 0x444c4f
mov ecx, edx
sub ecx, edi
sub edx, ecx
mov ebp, dword [edx]
neg ecx
lea eax, [eax + ecx*8]
jmp 0x444c68
mov ebp, dword [esp + 0x48]
jmp 0x444c74
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
mov ecx, dword [esp + 0x2c]
sub ecx, ebx
cmp ecx, 2
jb 0x444d81
cmp eax, 0x20
jbe 0x444c8f
mov edi, 3
jmp 0x444cde
cmp edx, dword [esp + 0x58]
jb 0x444ca3
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x444cdc
cmp edx, edi
jne 0x444cb1
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x444cde
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
mov dword [esp + 0x10], 0
cmp ebp, edi
jae 0x444cd1
mov ecx, edx
sub ecx, edi
mov edi, 1
jmp 0x444cd5
mov edi, dword [esp + 0x10]
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffffe
cmp ecx, ebx
sbb ecx, ecx
xor ebx, ebx
inc ecx
test edi, edi
sete bl
test ebx, ecx
mov ebx, dword [esp + 0x20]
je 0x444d30
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr edi, cl
mov cx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
mov edi, dword [esp + 0x54]
add ebx, ecx
mov dword [esp + 0x20], ebx
jmp 0x444c83
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffffe
mov dword [esp + 0x48], ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
mov dword [esp + 0x10], ecx
cmp ebx, ecx
ja 0x444d81
mov edi, dword [esp + 0x14]
neg edi
and edi, 0x1f
mov ecx, eax
and ecx, 0x1f
mov edx, ebp
shl edx, cl
mov ecx, edi
shr edx, cl
mov cx, word [esi + edx*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edx*4 + 6]
movzx edx, byte [esi + edx*4 + 7]
add ebx, edx
add eax, ecx
cmp ebx, dword [esp + 0x10]
jbe 0x444d54
mov dword [esp + 0x4c], eax
cmp ebx, dword [esp + 0x2c]
jae 0x444dd0
mov ecx, eax
and ecx, 0x1f
shl ebp, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr ebp, cl
mov cl, byte [esi + ebp*4 + 4]
mov byte [ebx], cl
cmp byte [esi + ebp*4 + 7], 1
jne 0x444db3
movzx edx, byte [esi + ebp*4 + 6]
add eax, edx
mov dword [esp + 0x4c], eax
jmp 0x444dd0
cmp eax, 0x20
jae 0x444dd0
movzx ecx, byte [esi + ebp*4 + 6]
add eax, ecx
mov dword [esp + 0x4c], eax
cmp eax, 0x20
jbe 0x444dd0
mov dword [esp + 0x4c], 0x20
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
sub edx, ebx
cmp edx, 4
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x18], ebx
jb 0x444ed0
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x40]
cmp eax, 0x20
jbe 0x444e03
mov edi, 3
jmp 0x444e52
cmp edx, dword [esp + 0x44]
jb 0x444e17
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x444e50
cmp edx, edi
jne 0x444e25
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x444e52
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
mov dword [esp + 0x10], 0
cmp ebp, edi
jae 0x444e45
mov ecx, edx
sub ecx, edi
mov edi, 1
jmp 0x444e49
mov edi, dword [esp + 0x10]
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x30]
add ecx, 0xfffffffd
cmp ebx, ecx
sbb ecx, ecx
xor ebx, ebx
neg ecx
test edi, edi
sete bl
test ebx, ecx
je 0x444f28
mov ebx, dword [esp + 0x14]
mov ecx, eax
and ecx, 0x1f
neg ebx
and ebx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, ebx
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
add ebx, ecx
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x28]
shr edi, cl
movzx ecx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
add ebx, ecx
mov dword [esp + 0x18], ebx
jmp 0x444df3
cmp eax, 0x20
ja 0x444eec
cmp edx, dword [esp + 0x44]
jb 0x444ef2
lea eax, [esp + 0x34]
call fcn.004418c0
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
jmp 0x444f38
mov edi, dword [esp + 0x40]
cmp edx, edi
je 0x444f22
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
cmp ebp, edi
jae 0x444f0b
mov ecx, edx
sub ecx, edi
sub edx, ecx
mov ebp, dword [edx]
neg ecx
lea eax, [eax + ecx*8]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ebp
jmp 0x444f3c
mov ebp, dword [esp + 0x34]
jmp 0x444f3c
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x30]
sub ecx, ebx
cmp ecx, 2
jb 0x44504e
jmp 0x444f50
cmp eax, 0x20
jbe 0x444f5c
mov edi, 3
jmp 0x444fab
cmp edx, dword [esp + 0x44]
jb 0x444f70
mov ecx, eax
shr ecx, 3
sub edx, ecx
and eax, 7
xor edi, edi
jmp 0x444fa9
cmp edx, edi
jne 0x444f7e
cmp eax, 0x20
sbb edi, edi
add edi, 2
jmp 0x444fab
mov ecx, eax
shr ecx, 3
mov ebp, edx
sub ebp, ecx
mov dword [esp + 0x10], 0
cmp ebp, edi
jae 0x444f9e
mov ecx, edx
sub ecx, edi
mov edi, 1
jmp 0x444fa2
mov edi, dword [esp + 0x10]
sub edx, ecx
neg ecx
lea eax, [eax + ecx*8]
mov ebp, dword [edx]
mov ecx, dword [esp + 0x30]
add ecx, 0xfffffffe
cmp ecx, ebx
sbb ecx, ecx
xor ebx, ebx
inc ecx
test edi, edi
sete bl
test ebx, ecx
mov ebx, dword [esp + 0x18]
je 0x444ffd
mov ecx, eax
and ecx, 0x1f
mov edi, ebp
shl edi, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr edi, cl
mov cx, word [esi + edi*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edi*4 + 6]
add eax, ecx
movzx ecx, byte [esi + edi*4 + 7]
mov edi, dword [esp + 0x40]
add ebx, ecx
mov dword [esp + 0x18], ebx
jmp 0x444f50
mov ecx, dword [esp + 0x30]
add ecx, 0xfffffffe
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x10], ecx
cmp ebx, ecx
ja 0x44504e
mov edi, dword [esp + 0x14]
neg edi
and edi, 0x1f
mov ecx, eax
and ecx, 0x1f
mov edx, ebp
shl edx, cl
mov ecx, edi
shr edx, cl
mov cx, word [esi + edx*4 + 4]
mov word [ebx], cx
movzx ecx, byte [esi + edx*4 + 6]
movzx edx, byte [esi + edx*4 + 7]
add ebx, edx
add eax, ecx
cmp ebx, dword [esp + 0x10]
jbe 0x445021
mov dword [esp + 0x38], eax
cmp ebx, dword [esp + 0x30]
jae 0x44509d
mov ecx, eax
and ecx, 0x1f
shl ebp, cl
mov ecx, dword [esp + 0x14]
neg ecx
and ecx, 0x1f
shr ebp, cl
mov cl, byte [esi + ebp*4 + 4]
mov byte [ebx], cl
cmp byte [esi + ebp*4 + 7], 1
jne 0x445080
movzx edx, byte [esi + ebp*4 + 6]
add eax, edx
mov dword [esp + 0x38], eax
jmp 0x44509d
cmp eax, 0x20
jae 0x44509d
movzx ecx, byte [esi + ebp*4 + 6]
add eax, ecx
mov dword [esp + 0x38], eax
cmp eax, 0x20
jbe 0x44509d
mov dword [esp + 0x38], 0x20
lea eax, [esp + 0x34]
call fcn.004418f0
mov edx, eax
lea eax, [esp + 0x48]
call fcn.004418f0
and edx, eax
lea eax, [esp + 0x64]
call fcn.004418f0
and edx, eax
lea eax, [esp + 0x78]
call fcn.004418f0
test eax, edx
mov eax, 0xffffffec
je 0x4450d7
mov eax, dword [esp + 0x9c]
pop esi
pop ebp
pop ebx
pop edi
add esp, 0x84
ret