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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov dword [esp], eax
mov eax, ecx
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x2c], edx
cmp ecx, 9
jbe 0x403e89
movzx edx, word [eax + 4]
movzx esi, word [eax + 2]
movzx ebx, word [eax]
mov ebp, edx
mov word [esp + 0x18], dx
mov dword [esp + 8], edx
lea edx, [ebx + esi]
add edx, ebp
mov ebp, ecx
mov word [esp + 0xc], si
sub ebp, edx
mov dword [esp + 0x14], ebp
lea edx, [ebp - 6]
mov ebp, dword [esp + 0x94]
mov ebp, dword [ebp]
mov dword [esp + 0x3c], ebp
cmp ecx, edx
jae 0x403ea0
mov edx, 0xffffffec
add esp, 0x7c
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
test ebx, ebx
je 0x404310
lea ebp, [eax + 6]
movzx ecx, byte [eax + ebx + 5]
mov dword [esp + 0x40], ebp
cmp ebx, 3
ja 0x4042d0
movzx ebp, byte [eax + 6]
mov dword [esp + 0x10], ebp
cmp bx, 2
je 0x403ede
cmp bx, 3
jne 0x403ee9
movzx edi, byte [eax + 8]
shl edi, 0x10
add ebp, edi
mov dword [esp + 0x10], ebp
movzx edi, byte [eax + 7]
shl edi, 8
add dword [esp + 0x10], edi
test cl, cl
je 0x403e89
mov edi, 5
bsr ecx, ecx
sub edi, ebx
shl edi, 3
sub edi, ecx
mov dword [esp + 4], edi
mov edi, dword [esp + 0x40]
mov dword [esp + 0x24], edi
test esi, esi
je 0x404310
mov edi, dword [esp + 0x40]
add edi, ebx
mov dword [esp + 0x44], edi
movzx ecx, byte [edi + esi - 1]
cmp esi, 3
jbe 0x404320
lea ebx, [edi + esi - 4]
mov dword [esp + 0x30], ebx
test cl, cl
je 0x4042f8
mov edi, dword [ebx]
bsr ecx, ecx
mov ebx, 8
sub ebx, ecx
mov dword [esp + 0x1c], edi
mov ebp, ebx
mov ebx, dword [esp + 8]
test ebx, ebx
je 0x404310
mov edi, dword [esp + 0x44]
add esi, edi
mov dword [esp + 0x5c], esi
movzx ecx, byte [esi + ebx - 1]
cmp ebx, 3
ja 0x404380
mov ebx, esi
movzx edi, word [esp + 0x18]
movzx esi, byte [esi]
mov dword [esp + 0x20], esi
cmp di, 2
je 0x403f95
cmp di, 3
jne 0x403fa4
movzx ebx, byte [ebx + 2]
shl ebx, 0x10
add esi, ebx
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x5c]
movzx ebx, byte [esi + 1]
shl ebx, 8
add dword [esp + 0x20], ebx
test cl, cl
je 0x403e89
mov esi, dword [esp + 8]
mov ebx, 5
bsr ecx, ecx
sub ebx, esi
mov esi, dword [esp + 0x5c]
shl ebx, 3
mov dword [esp + 0x34], esi
mov edi, ebx
sub edi, ecx
test edx, edx
je 0x404310
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 8]
add esi, ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x74], esi
movzx ecx, byte [esi + ebx - 7]
cmp edx, 3
jbe 0x404d80
test cl, cl
je 0x4042f8
cmp edx, 0xffffff88
ja 0x403e8e
lea esi, [esi + ebx - 0xa]
movzx edx, cl
mov ebx, 8
mov dword [esp + 0x38], esi
mov esi, dword [esi]
bsr edx, edx
sub ebx, edx
mov dword [esp + 0x28], esi
mov ecx, dword [esp]
mov edx, dword [esp + 0x2c]
lea esi, [ecx + edx]
add edx, 3
shr edx, 2
mov dword [esp + 0x78], esi
sub esi, 3
add ecx, edx
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
mov dword [esp + 0x68], ecx
add ecx, edx
mov dword [esp + 0x6c], ecx
add ecx, edx
mov edx, dword [esp + 0x3c]
add esi, 4
mov dword [esp + 0x70], ecx
shr edx, 0x10
movzx edx, dl
mov dword [esp + 0x64], edx
lea edx, [eax + 0xa]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x44]
add edx, 4
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x5c]
add edx, 4
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x74]
add edx, 4
mov dword [esp + 0x58], edx
cmp ecx, eax
jae 0x404dd3
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x64]
mov dword [esp + 8], esi
mov esi, edi
mov dword [esp + 0xc], ecx
mov edi, ebp
mov ebp, ebx
mov ebx, esi
mov dword [esp + 0x18], edx
neg eax
mov edx, dword [esp + 0x68]
and eax, 0x1f
mov dword [esp + 0x14], edx
mov dword [esp + 0x3c], eax
jmp 0x404170
mov edx, dword [esp + 4]
mov eax, edx
and edx, 7
shr eax, 3
mov dword [esp + 4], edx
sub ecx, eax
mov eax, dword [ecx]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], eax
xor eax, eax
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x50]
cmp ecx, esi
jb 0x4049a0
mov edx, edi
and edi, 7
shr edx, 3
sub ecx, edx
mov esi, dword [ecx]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x54]
cmp ecx, esi
jb 0x4049b0
mov edx, ebx
and ebx, 7
shr edx, 3
sub ecx, edx
mov esi, dword [ecx]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], esi
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x58]
cmp ecx, esi
jb 0x4043a8
mov edx, ebp
and ebp, 7
shr edx, 3
sub ecx, edx
mov esi, dword [ecx]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x28], esi
test eax, eax
jne 0x4043a8
mov esi, dword [esp + 0x60]
cmp dword [esp + 0xc], esi
jae 0x4043a8
mov esi, dword [esp + 0x3c]
movzx ecx, byte [esp + 4]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 8]
shl eax, cl
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 4]
lea edx, [edx + eax*2]
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
add ecx, edx
mov edx, dword [esp]
add dword [esp], 2
mov dword [esp + 4], ecx
mov ecx, edi
mov byte [edx], al
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 8]
shl eax, cl
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x14]
lea edx, [edx + eax*2]
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
mov byte [ecx], al
mov eax, dword [esp + 0x20]
mov ecx, ebx
add edx, edi
mov edi, esi
mov dword [esp + 0x48], edx
shl eax, cl
mov ecx, esi
mov esi, dword [esp + 8]
shr eax, cl
mov ecx, dword [esp + 0x18]
lea edx, [esi + eax*2]
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
mov byte [ecx], al
mov eax, dword [esp + 0x28]
mov ecx, ebp
add edx, ebx
mov ebx, esi
shl eax, cl
mov ecx, edi
shr eax, cl
lea eax, [esi + eax*2]
mov esi, dword [esp + 4]
movzx ecx, byte [eax]
movzx eax, byte [eax + 1]
add eax, ebp
mov ebp, dword [esp + 0xc]
mov byte [ebp], cl
mov ebp, dword [esp + 0x10]
mov ecx, esi
shl ebp, cl
mov ecx, edi
shr ebp, cl
lea ecx, [ebx + ebp*2]
movzx ebx, byte [ecx]
movzx ecx, byte [ecx + 1]
mov edi, dword [esp]
mov ebp, dword [esp + 0x3c]
add ecx, esi
mov esi, dword [esp + 0x48]
add dword [esp + 0x14], 2
mov byte [edi - 1], bl
mov edi, dword [esp + 0x1c]
mov dword [esp + 4], ecx
mov ecx, esi
mov ebx, dword [esp + 0x14]
shl edi, cl
mov ecx, ebp
add dword [esp + 0x18], 2
shr edi, cl
mov ecx, dword [esp + 8]
add dword [esp + 0xc], 2
lea edi, [ecx + edi*2]
movzx ecx, byte [edi]
movzx edi, byte [edi + 1]
mov byte [ebx - 1], cl
mov ebx, dword [esp + 0x20]
mov ecx, edx
add edi, esi
mov esi, dword [esp + 0x18]
shl ebx, cl
mov ecx, ebp
shr ebx, cl
mov ecx, dword [esp + 8]
lea ebx, [ecx + ebx*2]
movzx ecx, byte [ebx]
movzx ebx, byte [ebx + 1]
add ebx, edx
mov edx, dword [esp + 0x28]
mov byte [esi - 1], cl
mov ecx, eax
mov esi, dword [esp + 0xc]
shl edx, cl
mov ecx, ebp
shr edx, cl
mov ecx, dword [esp + 8]
lea ecx, [ecx + edx*2]
movzx edx, byte [ecx]
movzx ecx, byte [ecx + 1]
mov byte [esi - 1], dl
lea ebp, [ecx + eax]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x4c]
cmp ecx, esi
jae 0x4040d0
mov eax, 3
jmp 0x4040ee
lea edi, [ebp + ebx - 4]
mov dword [esp + 0x24], edi
test cl, cl
je 0x4042f8
mov edi, dword [edi]
bsr ecx, ecx
mov dword [esp + 0x10], edi
mov edi, 8
sub edi, ecx
mov dword [esp + 4], edi
jmp 0x403f08
add esp, 0x7c
mov edx, 0xffffffff
pop ebx
mov eax, edx
pop esi
pop edi
pop ebp
ret
mov edx, 0xffffffb8
jmp 0x403e8e
mov ebx, edi
movzx ebp, word [esp + 0xc]
movzx edi, byte [edi]
mov dword [esp + 0x1c], edi
cmp bp, 2
je 0x40436d
cmp bp, 3
je 0x404360
test cl, cl
je 0x403e89
mov ebx, 5
bsr ecx, ecx
mov edi, dword [esp + 0x44]
sub ebx, esi
shl ebx, 3
mov dword [esp + 0x30], edi
sub ebx, ecx
mov ebp, ebx
jmp 0x403f4a
movzx ebx, byte [ebx + 2]
shl ebx, 0x10
add edi, ebx
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x44]
movzx ebx, byte [edi + 1]
shl ebx, 8
add dword [esp + 0x1c], ebx
jmp 0x40433a
lea esi, [esi + ebx - 4]
mov dword [esp + 0x34], esi
test cl, cl
je 0x4042f8
mov esi, dword [esi]
bsr ecx, ecx
mov edi, 8
sub edi, ecx
mov dword [esp + 0x20], esi
jmp 0x403fc9
mov eax, ebx
mov esi, dword [esp + 8]
mov ebx, ebp
mov ebp, edi
mov edi, eax
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x6c], edx
setb dl
mov ecx, dword [esp]
cmp dword [esp + 0x68], ecx
setb al
or al, dl
jne 0x403e89
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x70], edx
jb 0x403e89
cmp dword [esp + 4], 0x20
ja 0x4044fb
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp + 8], eax
jmp 0x4044a2
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x40], eax
je 0x404ca0
mov edx, dword [esp + 4]
shr edx, 3
sub eax, edx
mov ecx, eax
mov eax, dword [esp + 0x40]
cmp ecx, eax
jb 0x404c78
mov eax, dword [esp + 0x68]
mov dword [esp + 0x24], ecx
sub eax, 3
cmp dword [esp], eax
setb al
shl edx, 3
sub dword [esp + 4], edx
mov edx, dword [ecx]
mov dword [esp + 0x10], edx
test al, al
je 0x404c95
movzx ecx, byte [esp + 4]
mov eax, dword [esp + 0x10]
shl eax, cl
movzx ecx, byte [esp + 8]
shr eax, cl
mov ecx, dword [esp + 4]
lea edx, [esi + eax*2]
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
add edx, ecx
mov ecx, dword [esp]
mov byte [ecx], al
add ecx, 2
mov eax, dword [esp + 0x10]
mov dword [esp], ecx
mov ecx, edx
shl eax, cl
movzx ecx, byte [esp + 8]
shr eax, cl
lea eax, [esi + eax*2]
movzx ecx, byte [eax]
movzx eax, byte [eax + 1]
add edx, eax
mov eax, dword [esp]
mov dword [esp + 4], edx
mov byte [eax - 1], cl
cmp edx, 0x20
ja 0x4044fb
mov edx, dword [esp + 0x4c]
cmp dword [esp + 0x24], edx
jb 0x404400
mov edx, dword [esp + 4]
mov eax, edx
and edx, 7
shr eax, 3
sub dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], edx
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x68]
sub eax, 3
cmp dword [esp], eax
setb al
jmp 0x404443
mov edx, dword [esp + 0x24]
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub dword [esp + 4], eax
mov eax, dword [edx]
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
neg edx
and edx, 0x1f
cmp dword [esp], ecx
jae 0x40454c
mov dword [esp + 8], ebx
mov eax, dword [esp]
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x10]
mov ecx, ebp
add eax, 1
shl ebx, cl
mov ecx, edx
shr ebx, cl
lea ecx, [esi + ebx*2]
movzx ebx, byte [ecx]
movzx ecx, byte [ecx + 1]
mov byte [eax - 1], bl
add ebp, ecx
cmp dword [esp + 0x68], eax
jne 0x40451c
mov dword [esp + 4], ebp
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x3c]
cmp ebp, 0x20
ja 0x40465b
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp], eax
jmp 0x404608
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x44], eax
je 0x404bb4
mov ecx, ebp
shr ecx, 3
sub eax, ecx
mov edx, ecx
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp ecx, eax
jb 0x404b90
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x30], ecx
sub eax, 3
cmp dword [esp + 0x14], eax
setb al
shl edx, 3
sub ebp, edx
mov edx, dword [ecx]
mov dword [esp + 0x1c], edx
test al, al
je 0x404bab
mov eax, dword [esp + 0x1c]
mov ecx, ebp
shl eax, cl
movzx ecx, byte [esp]
shr eax, cl
mov ecx, dword [esp + 0x14]
lea eax, [esi + eax*2]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
add ecx, 2
mov byte [ecx - 2], dl
add eax, ebp
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x14], ecx
mov ecx, eax
shl edx, cl
movzx ecx, byte [esp]
shr edx, cl
lea ecx, [esi + edx*2]
movzx ebp, byte [ecx + 1]
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x14]
add ebp, eax
mov byte [ecx - 1], dl
cmp ebp, 0x20
ja 0x40465b
mov edx, dword [esp + 0x50]
cmp dword [esp + 0x30], edx
jb 0x404570
mov eax, ebp
and ebp, 7
shr eax, 3
sub dword [esp + 0x30], eax
mov edx, dword [esp + 0x30]
mov eax, dword [edx]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x6c]
sub eax, 3
cmp dword [esp + 0x14], eax
setb al
jmp 0x4045b2
mov ecx, edx
mov edx, dword [esp + 0x30]
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub ebp, eax
mov eax, dword [edx]
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x6c]
neg edx
and edx, 0x1f
cmp dword [esp + 0x14], ecx
jae 0x40469c
mov dword [esp], ebx
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
mov ecx, ebp
add eax, 1
shl ebx, cl
mov ecx, edx
shr ebx, cl
lea ecx, [esi + ebx*2]
movzx ebx, byte [ecx]
movzx ecx, byte [ecx + 1]
mov byte [eax - 1], bl
add ebp, ecx
cmp dword [esp + 0x6c], eax
jne 0x404675
mov ebx, dword [esp]
cmp edi, 0x20
ja 0x4047ab
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp], eax
jmp 0x404757
mov eax, dword [esp + 0x34]
cmp dword [esp + 0x5c], eax
je 0x404acc
mov ecx, edi
shr ecx, 3
sub eax, ecx
mov edx, ecx
mov ecx, eax
mov eax, dword [esp + 0x5c]
cmp ecx, eax
jb 0x404aa8
mov eax, dword [esp + 0x70]
mov dword [esp + 0x34], ecx
sub eax, 3
cmp dword [esp + 0x18], eax
setb al
shl edx, 3
sub edi, edx
mov edx, dword [ecx]
mov dword [esp + 0x20], edx
test al, al
je 0x404ac3
mov eax, dword [esp + 0x20]
mov ecx, edi
shl eax, cl
movzx ecx, byte [esp]
shr eax, cl
lea eax, [esi + eax*2]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
add eax, edi
mov edi, dword [esp + 0x18]
mov ecx, eax
mov byte [edi], dl
mov edx, dword [esp + 0x20]
add edi, 2
mov dword [esp + 0x18], edi
shl edx, cl
movzx ecx, byte [esp]
shr edx, cl
lea ecx, [esi + edx*2]
movzx edi, byte [ecx + 1]
movzx edx, byte [ecx]
add edi, eax
mov eax, dword [esp + 0x18]
mov byte [eax - 1], dl
cmp edi, 0x20
ja 0x4047ab
mov edx, dword [esp + 0x54]
cmp dword [esp + 0x34], edx
jb 0x4046c0
mov eax, edi
and edi, 7
shr eax, 3
sub dword [esp + 0x34], eax
mov edx, dword [esp + 0x34]
mov eax, dword [edx]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x70]
sub eax, 3
cmp dword [esp + 0x18], eax
setb al
jmp 0x404702
mov ecx, edx
mov edx, dword [esp + 0x34]
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub edi, eax
mov eax, dword [edx]
mov dword [esp + 0x34], edx
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x70]
neg edx
and edx, 0x1f
cmp dword [esp + 0x18], ecx
jae 0x4047ec
mov dword [esp], ebx
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
mov ecx, edi
add eax, 1
shl ebx, cl
mov ecx, edx
shr ebx, cl
lea ecx, [esi + ebx*2]
movzx ebx, byte [ecx]
movzx ecx, byte [ecx + 1]
mov byte [eax - 1], bl
add edi, ecx
cmp dword [esp + 0x70], eax
jne 0x4047c5
mov ebx, dword [esp]
cmp ebx, 0x20
ja 0x4048fb
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp], eax
jmp 0x4048a8
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x38]
cmp edx, eax
je 0x4049e4
mov ecx, ebx
shr ecx, 3
sub eax, ecx
mov dword [esp + 8], ecx
mov ecx, eax
cmp eax, edx
jb 0x4049c0
mov edx, dword [esp + 0x60]
cmp dword [esp + 0xc], edx
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 8]
setb al
shl edx, 3
sub ebx, edx
mov edx, dword [ecx]
mov dword [esp + 0x28], edx
test al, al
je 0x4049db
mov eax, dword [esp + 0x28]
mov ecx, ebx
shl eax, cl
movzx ecx, byte [esp]
shr eax, cl
lea eax, [esi + eax*2]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
add eax, ebx
mov ebx, dword [esp + 0xc]
mov ecx, eax
mov byte [ebx], dl
mov edx, dword [esp + 0x28]
add ebx, 2
mov dword [esp + 0xc], ebx
shl edx, cl
movzx ecx, byte [esp]
shr edx, cl
lea ecx, [esi + edx*2]
movzx ebx, byte [ecx + 1]
movzx edx, byte [ecx]
add ebx, eax
mov eax, dword [esp + 0xc]
mov byte [eax - 1], dl
cmp ebx, 0x20
ja 0x4048fb
mov edx, dword [esp + 0x58]
cmp dword [esp + 0x38], edx
jb 0x404810
mov eax, ebx
and ebx, 7
shr eax, 3
sub dword [esp + 0x38], eax
mov edx, dword [esp + 0x38]
mov eax, dword [edx]
mov edx, dword [esp + 0x60]
cmp dword [esp + 0xc], edx
mov dword [esp + 0x28], eax
setb al
jmp 0x404853
mov ecx, edx
mov edx, dword [esp + 0x38]
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub ebx, eax
mov eax, dword [edx]
mov dword [esp + 0x38], edx
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x78]
neg edx
and edx, 0x1f
cmp dword [esp + 0xc], ecx
jae 0x40493e
mov dword [esp], ebp
mov eax, dword [esp + 0xc]
mov ebp, dword [esp + 0x28]
mov ecx, ebx
add eax, 1
shl ebp, cl
mov ecx, edx
shr ebp, cl
lea ecx, [esi + ebp*2]
movzx ebp, byte [ecx]
movzx ecx, byte [ecx + 1]
add ebx, ecx
mov ecx, ebp
mov byte [eax - 1], cl
cmp dword [esp + 0x78], eax
jne 0x404915
mov ebp, dword [esp]
mov esi, dword [esp + 0x24]
xor edx, edx
cmp dword [esp + 0x40], esi
je 0x404df9
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp dword [esp + 0x44], ecx
je 0x404dec
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x5c], ecx
jne 0x403e89
mov ecx, dword [esp + 0x38]
cmp dword [esp + 0x74], ecx
jne 0x403e89
xor ecx, ecx
cmp edi, 0x20
sete cl
and edx, ecx
test edx, eax
je 0x403e89
cmp ebx, 0x20
jne 0x403e89
mov edx, dword [esp + 0x2c]
jmp 0x403e8e
mov eax, 3
jmp 0x404112
mov eax, 3
jmp 0x404136
mov ecx, edx
mov edx, dword [esp + 0x38]
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub ebx, eax
mov eax, dword [edx]
mov dword [esp + 0x38], edx
mov dword [esp + 0x28], eax
cmp ebx, 0x20
ja 0x4048fb
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp], eax
jmp 0x404a74
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x38]
cmp edx, eax
je 0x4048fb
mov ecx, ebx
shr ecx, 3
sub eax, ecx
mov dword [esp + 8], ecx
mov ecx, eax
cmp eax, edx
jb 0x4048e0
mov edx, dword [esp + 0x78]
cmp dword [esp + 0xc], edx
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 8]
setb al
shl edx, 3
sub ebx, edx
mov edx, dword [ecx]
mov dword [esp + 0x28], edx
test al, al
je 0x4048fb
mov edx, dword [esp + 0x28]
mov ecx, ebx
add dword [esp + 0xc], 1
shl edx, cl
movzx ecx, byte [esp]
mov eax, edx
shr eax, cl
lea eax, [esi + eax*2]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
add ebx, eax
mov eax, dword [esp + 0xc]
mov byte [eax - 1], dl
cmp ebx, 0x20
ja 0x4048fb
mov edx, dword [esp + 0x58]
cmp dword [esp + 0x38], edx
jb 0x4049f8
mov eax, ebx
and ebx, 7
shr eax, 3
sub dword [esp + 0x38], eax
mov edx, dword [esp + 0x38]
mov eax, dword [edx]
mov edx, dword [esp + 0x78]
cmp dword [esp + 0xc], edx
mov dword [esp + 0x28], eax
setb al
jmp 0x404a3b
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub edi, eax
mov eax, dword [edx]
mov dword [esp + 0x34], edx
mov dword [esp + 0x20], eax
cmp edi, 0x20
ja 0x4047ab
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp], eax
jmp 0x404b5c
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
cmp edx, eax
je 0x4047ab
mov ecx, edi
shr ecx, 3
sub eax, ecx
mov dword [esp + 8], ecx
mov ecx, eax
cmp eax, edx
jb 0x404790
mov edx, dword [esp + 0x70]
cmp dword [esp + 0x18], edx
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 8]
setb al
shl edx, 3
sub edi, edx
mov edx, dword [ecx]
mov dword [esp + 0x20], edx
test al, al
je 0x4047ab
mov edx, dword [esp + 0x20]
mov ecx, edi
add dword [esp + 0x18], 1
shl edx, cl
movzx ecx, byte [esp]
mov eax, edx
shr eax, cl
lea eax, [esi + eax*2]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
add edi, eax
mov eax, dword [esp + 0x18]
mov byte [eax - 1], dl
cmp edi, 0x20
ja 0x4047ab
mov edx, dword [esp + 0x54]
cmp dword [esp + 0x34], edx
jb 0x404ae0
mov eax, edi
and edi, 7
shr eax, 3
sub dword [esp + 0x34], eax
mov edx, dword [esp + 0x34]
mov eax, dword [edx]
mov edx, dword [esp + 0x70]
cmp dword [esp + 0x18], edx
mov dword [esp + 0x20], eax
setb al
jmp 0x404b23
mov edx, dword [esp + 0x30]
mov ecx, eax
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub ebp, eax
mov eax, dword [edx]
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], eax
cmp ebp, 0x20
ja 0x40465b
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp], eax
jmp 0x404c44
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x30]
cmp edx, eax
je 0x40465b
mov ecx, ebp
shr ecx, 3
sub eax, ecx
mov dword [esp + 8], ecx
mov ecx, eax
cmp eax, edx
jb 0x404640
mov edx, dword [esp + 0x6c]
cmp dword [esp + 0x14], edx
mov dword [esp + 0x30], ecx
mov edx, dword [esp + 8]
setb al
shl edx, 3
sub ebp, edx
mov edx, dword [ecx]
mov dword [esp + 0x1c], edx
test al, al
je 0x40465b
mov edx, dword [esp + 0x1c]
mov ecx, ebp
add dword [esp + 0x14], 1
shl edx, cl
movzx ecx, byte [esp]
mov eax, edx
shr eax, cl
lea eax, [esi + eax*2]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
add ebp, eax
mov eax, dword [esp + 0x14]
mov byte [eax - 1], dl
cmp ebp, 0x20
ja 0x40465b
mov edx, dword [esp + 0x50]
cmp dword [esp + 0x30], edx
jb 0x404bc8
mov eax, ebp
and ebp, 7
shr eax, 3
sub dword [esp + 0x30], eax
mov edx, dword [esp + 0x30]
mov eax, dword [edx]
mov edx, dword [esp + 0x6c]
cmp dword [esp + 0x14], edx
mov dword [esp + 0x1c], eax
setb al
jmp 0x404c0b
mov edx, dword [esp + 0x24]
mov ecx, eax
mov eax, edx
sub eax, ecx
sub edx, eax
shl eax, 3
sub dword [esp + 4], eax
mov eax, dword [edx]
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], eax
cmp dword [esp + 4], 0x20
ja 0x4044fb
mov eax, dword [esp + 0x64]
neg eax
and eax, 0x1f
mov dword [esp + 8], eax
jmp 0x404d3f
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
cmp ecx, eax
je 0x4044fb
mov edx, dword [esp + 4]
shr edx, 3
sub eax, edx
mov dword [esp + 0x10], eax
cmp dword [esp + 0x10], ecx
jb 0x4044e0
mov ecx, dword [esp + 0x68]
cmp dword [esp], ecx
mov ecx, dword [esp + 0x10]
setb al
shl edx, 3
sub dword [esp + 4], edx
mov edx, dword [ecx]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], edx
test al, al
je 0x4044fb
movzx ecx, byte [esp + 4]
mov edx, dword [esp + 0x10]
add dword [esp], 1
shl edx, cl
movzx ecx, byte [esp + 8]
mov eax, edx
shr eax, cl
mov ecx, dword [esp]
lea eax, [esi + eax*2]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
add dword [esp + 4], eax
mov eax, dword [esp + 4]
mov byte [ecx - 1], dl
cmp eax, 0x20
ja 0x4044fb
mov edx, dword [esp + 0x4c]
cmp dword [esp + 0x24], edx
jb 0x404cb8
mov edx, dword [esp + 4]
mov eax, edx
and edx, 7
shr eax, 3
sub dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x68]
mov eax, dword [eax]
cmp dword [esp], edx
mov dword [esp + 0x10], eax
setb al
jmp 0x404cfe
mov ebx, esi
movzx esi, byte [esi]
mov dword [esp + 0x28], esi
cmp edx, 2
je 0x404da0
cmp edx, 3
jne 0x404daf
movzx ebx, byte [ebx + 2]
shl ebx, 0x10
add esi, ebx
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x74]
movzx ebx, byte [esi + 1]
shl ebx, 8
add dword [esp + 0x28], ebx
test cl, cl
je 0x403e89
mov ebx, 5
bsr ecx, ecx
mov esi, dword [esp + 0x74]
sub ebx, edx
shl ebx, 3
mov dword [esp + 0x38], esi
sub ebx, ecx
jmp 0x40401d
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x14], eax
jmp 0x4043b4
xor eax, eax
cmp ebp, 0x20
sete al
jmp 0x40495e
xor edx, edx
cmp dword [esp + 4], 0x20
sete dl
jmp 0x40494e