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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x7c
mov edi, edx
mov esi, ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x60], edx
mov eax, dword [esi + 0x2c]
test eax, eax
mov dword [esp + 0x58], eax
je 0x401fd8
mov eax, dword [esi + 0x18]
mov ebp, dword [esi + 0x28]
mov dword [esp + 0x54], edi
mov dword [esp + 0x18], eax
jmp 0x402009
mov edx, dword [esi + 0x18]
mov ebp, dword [esi + 0x28]
mov eax, dword [esi + 4]
mov ecx, edi
sub eax, ebp
sub ecx, edx
mov dword [esp + 0x18], edx
add edx, eax
cmp ecx, eax
cmovbe edx, edi
test ebp, ebp
mov dword [esp + 0x54], edx
jne 0x402009
xor ebp, ebp
cmp dword [esi + 0x24], 0xbffffbff
ja 0x403de4
mov eax, dword [esi + 0x40]
mov cl, byte [esi + 2]
xor edx, edx
mov ch, byte [esi + 1]
mov ebx, dword [esi + 0xc]
mov dword [esp + 0x24], 0
dec edx
mov edi, edx
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x30]
shl edi, cl
mov cl, ch
mov dword [esp + 0x14], ebx
mov dword [esp + 0x30], eax
mov eax, edi
and edi, 0xf0000000
xor eax, edx
movzx edx, byte [esi]
and eax, 0xfffffff
or edi, eax
mov eax, pe_nt_image_headers32
mov dword [esp + 0x78], edi
mov edi, pe_nt_image_headers32
shl edi, cl
mov ecx, edx
mov dword [esp + 0x74], edx
mov edx, dword [esi + 0x34]
shr eax, cl
mov ecx, dword [esi + 0x38]
sub edi, eax
mov dword [esp + 0x70], edi
mov edi, dword [esi + 0x20]
mov dword [esp + 0x34], edx
mov edx, dword [esi + 0x3c]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x44], edx
mov edx, dword [esi + 0x14]
mov dword [esp + 0x40], ecx
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x28], edx
lea edx, [ebx - 0x600]
mov dword [esp], ecx
mov ecx, dword [esi + 0x24]
lea esi, [ebx - 0xa00]
mov dword [esp + 0x6c], edx
lea edx, [ebx + 0x280]
mov dword [esp + 0x64], esi
lea esi, [ebx + 0x80]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x68], esi
mov ebx, ecx
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], ebp
xor edx, ebp
not edx
and edx, ebp
shl edx, 4
cmp edi, 0xffffff
lea esi, [eax + edx]
movzx ebp, word [ecx + esi*2 - 0x200]
ja 0x4020fe
mov eax, dword [esp]
shl ebx, 8
shl edi, 8
movzx ecx, byte [eax]
inc eax
mov dword [esp], eax
or ebx, ecx
mov eax, edi
mov ecx, ebx
shr eax, 0xb
imul eax, ebp
sub ecx, eax
jae 0x402250
mov dword [esp + 0xc], eax
mov eax, 0x800
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov edi, 0x80f98c2c
mov dword [esp + 8], ebx
mov ebx, 0x7f0673d3
sub eax, ebp
shr eax, 5
add eax, ebp
mov ebp, dword [esp + 0x58]
mov word [ecx + esi*2 - 0x200], ax
xor esi, esi
mov eax, edx
dec esi
xor eax, esi
mov ecx, ebp
xor ecx, esi
mov esi, eax
and esi, edi
mov edi, edx
or eax, ecx
and edi, ebx
mov ebx, 0x7f0673d3
or edi, esi
mov esi, 0x80f98c2c
and ecx, esi
mov esi, ebp
and esi, ebx
xor ebp, ebp
or esi, ecx
dec ebp
xor esi, edi
xor eax, ebp
or eax, esi
mov esi, dword [esp + 0x5c]
je 0x4021d0
mov ecx, dword [esp + 0x18]
mov eax, edx
mov ebx, edx
mov edx, dword [esp + 0x40]
mov edi, 0x4a42a766
shl eax, 8
mov esi, eax
test ecx, ecx
cmove ecx, dword [esp + 0x28]
xor esi, ebp
and eax, 0xb5bd5800
and esi, edi
or eax, esi
movzx ecx, byte [ecx + edx - 1]
mov edx, dword [esp + 0x5c]
mov esi, ecx
and ecx, 0xffffff99
xor esi, ebp
and esi, edi
or ecx, esi
xor ecx, ebp
xor ecx, eax
mov eax, dword [esp + 0x70]
xor eax, ebp
or eax, ecx
mov ecx, dword [esp + 0x74]
xor eax, ebp
shl eax, cl
lea eax, [eax + eax*2]
lea esi, [edx + eax*2]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov eax, 0
mov dword [esp + 4], esi
cmp edx, 6
ja 0x4022c9
mov ecx, dword [esp + 0xc]
movzx ebp, word [esi + 2]
sub edx, 3
cmovb edx, eax
mov dword [esp + 0x10], edx
cmp ecx, 0xffffff
ja 0x402413
mov ebx, dword [esp + 8]
mov edx, dword [esp]
shl ebx, 8
xor edi, edi
movzx eax, byte [edx]
mov esi, ebx
dec edi
and ebx, 0xbe80fa00
xor esi, edi
mov edi, 0x417f05e5
and esi, edi
or ebx, esi
xor edi, edi
mov esi, eax
and eax, 0x1a
inc edx
shl ecx, 8
dec edi
mov dword [esp], edx
xor esi, edi
mov edi, 0x417f05e5
and esi, edi
or eax, esi
xor ebx, eax
jmp 0x402417
mov dword [esp + 0x1c], edx
mov edx, ebp
sub edi, eax
mov eax, dword [esp + 0x10]
shr edx, 5
mov ebx, edi
sub ebp, edx
mov edx, dword [esp + 0x14]
cmp edi, 0xffffff
mov word [edx + esi*2 - 0x200], bp
movzx edx, word [edx + eax*2 + 0x20]
ja 0x402292
mov eax, dword [esp]
shl ecx, 8
shl ebx, 8
mov edi, ecx
movzx ecx, byte [eax]
inc eax
mov dword [esp], eax
or edi, ecx
mov ecx, edi
mov ebp, ebx
mov edi, ecx
shr ebp, 0xb
imul ebp, edx
sub edi, ebp
jae 0x402358
mov esi, 0x800
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
sub esi, edx
shr esi, 5
add esi, edx
mov word [edi + eax*2 + 0x20], si
mov esi, dword [esp + 0x6c]
add eax, 0xc
jmp 0x402ff2
mov eax, ecx
mov ecx, 0
sub eax, dword [esp + 0x30]
cmovb ecx, edi
add ecx, eax
mov eax, dword [esp + 0x40]
cmp edx, 9
seta byte [esp + 0x50]
movzx eax, byte [eax + ecx]
lea edx, [eax + eax]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xc]
and edx, 0x100
movzx ebp, word [esi + edx*2 + 0x202]
cmp eax, 0xffffff
ja 0x40243f
mov ebx, dword [esp + 8]
mov ecx, dword [esp]
mov dword [esp + 0x20], edx
mov edi, 0x8559a94d
shl ebx, 8
xor edx, edx
movzx ecx, byte [ecx]
mov esi, ebx
dec edx
and ebx, 0x7aa65600
xor esi, edx
mov edx, 0x8559a94d
and esi, edx
or ebx, esi
xor edx, edx
mov esi, ecx
and ecx, 0xffffffb2
inc dword [esp]
shl eax, 8
dec edx
xor esi, edx
mov edx, dword [esp + 0x20]
and esi, edi
or ecx, esi
xor ebx, ecx
jmp 0x402443
sub ebx, ebp
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov ecx, edx
shr ecx, 5
sub edx, ecx
cmp ebx, 0xffffff
mov word [ebp + eax*2 + 0x20], dx
movzx edx, word [ebp + eax*2 + 0x38]
ja 0x4023b5
mov eax, dword [esp]
shl edi, 8
xor ebp, ebp
mov ecx, edi
dec ebp
and edi, 0xe6f66f00
xor ecx, ebp
mov ebp, 0x190990f8
and ecx, ebp
movzx eax, byte [eax]
or edi, ecx
xor ebp, ebp
inc dword [esp]
shl ebx, 8
dec ebp
mov ecx, eax
and eax, 7
xor ecx, ebp
mov ebp, 0x190990f8
and ecx, ebp
or eax, ecx
xor edi, eax
mov ebp, ebx
mov ecx, edi
mov dword [esp + 8], edi
shr ebp, 0xb
imul ebp, edx
sub ecx, ebp
jae 0x402491
mov ecx, 0x800
mov eax, dword [esp + 0x10]
sub ecx, edx
shr ecx, 5
add ecx, edx
mov edx, dword [esp + 0x14]
cmp ebp, 0xffffff
mov word [edx + eax*2 + 0x38], cx
movzx edx, word [edx + esi*2 - 0xc00]
ja 0x402e8e
mov eax, dword [esp]
mov ebx, dword [esp + 8]
shl ebp, 8
movzx ecx, byte [eax]
shl ebx, 8
inc eax
mov dword [esp], eax
or ebx, ecx
jmp 0x402e92
mov ebx, dword [esp + 8]
mov esi, ecx
mov edi, ebx
shr esi, 0xb
imul esi, ebp
sub edi, esi
jae 0x402534
mov eax, 0x800
mov edx, 2
sub eax, ebp
shr eax, 5
add eax, ebp
jmp 0x402548
mov ebx, dword [esp + 8]
mov edi, eax
mov esi, ebx
lea ecx, [edx + 0x101]
shr edi, 0xb
mov dword [esp + 8], ecx
imul edi, ebp
sub esi, edi
jae 0x40259d
mov eax, edx
mov edx, 0x800
mov ecx, dword [esp + 4]
mov esi, dword [esp + 8]
sub edx, ebp
shr edx, 5
add edx, ebp
mov ebp, 2
mov word [ecx + esi*2], dx
mov edx, eax
not eax
and eax, 0x100
movzx edx, dl
or edx, eax
jmp 0x4025bb
mov esi, edx
mov eax, dword [esp + 0x10]
sub ebx, ebp
shr esi, 5
sub edx, esi
mov esi, dword [esp + 0x14]
cmp ebx, 0xffffff
mov word [esi + eax*2 + 0x38], dx
movzx esi, word [esi + eax*2 + 0x50]
ja 0x4024f8
mov eax, dword [esp]
shl ecx, 8
xor ebp, ebp
mov dword [esp + 0xc], ebx
mov ebx, ecx
dec ebp
mov edi, ecx
mov ecx, 0x8b6ccce
xor ebx, ebp
and edi, 0xf7493300
and ebx, ecx
mov ecx, 0x8b6ccce
movzx edx, byte [eax]
or edi, ebx
inc eax
mov dword [esp], eax
mov ebx, edx
and edx, 0x31
xor ebx, ebp
and ebx, ecx
or edx, ebx
mov ebx, dword [esp + 0xc]
xor edi, edx
mov ecx, edi
shl ebx, 8
mov ebp, ebx
mov edx, ecx
shr ebp, 0xb
imul ebp, esi
sub edx, ebp
jae 0x402f03
mov edx, 0x800
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
sub edx, esi
shr edx, 5
add edx, esi
mov esi, dword [esp + 0x14]
mov word [esi + eax*2 + 0x50], dx
mov esi, dword [esp + 0x34]
mov dword [esp + 0x30], esi
jmp 0x402fdc
mov eax, ebp
sub ecx, esi
mov edx, 3
mov ebx, edi
shr eax, 5
mov esi, ecx
sub ebp, eax
mov eax, ebp
mov ebp, dword [esp + 4]
mov edi, edx
cmp esi, 0xffffff
mov word [ebp + 2], ax
movzx eax, word [ebp + edx*2]
ja 0x402571
mov edx, dword [esp]
shl ebx, 8
shl esi, 8
movzx ecx, byte [edx]
inc edx
mov dword [esp], edx
or ebx, ecx
mov ecx, esi
mov edx, ebx
shr ecx, 0xb
imul ecx, eax
sub edx, ecx
jae 0x402656
mov edx, 0x800
sub edx, eax
shr edx, 5
add edx, eax
mov eax, edi
mov word [ebp + edi*2], dx
add eax, edi
jmp 0x402676
sub eax, edi
mov edi, ebp
mov ecx, dword [esp + 4]
mov ebx, esi
shr edi, 5
sub ebp, edi
mov edi, dword [esp + 8]
mov word [ecx + edi*2], bp
mov ebp, 3
mov edi, eax
mov eax, dword [esp + 0x1c]
mov ecx, edx
mov dword [esp + 0x20], edx
mov dword [esp + 0xc], ebp
lea esi, [eax*4]
xor eax, eax
dec eax
xor ecx, eax
xor esi, eax
or esi, ecx
xor esi, eax
lea eax, [edx + ebp]
add eax, esi
mov dword [esp + 8], esi
mov esi, dword [esp + 4]
cmp edi, 0xffffff
mov dword [esp + 0x38], eax
movzx esi, word [esi + eax*2]
ja 0x40260a
mov edx, dword [esp]
shl ebx, 8
shl edi, 8
movzx eax, byte [edx]
inc edx
mov dword [esp], edx
or ebx, eax
mov ebp, edi
mov eax, ebx
shr ebp, 0xb
imul ebp, esi
sub eax, ebp
jae 0x4026c3
mov eax, 0x800
mov edx, dword [esp + 4]
mov edi, ebx
sub eax, esi
shr eax, 5
add eax, esi
mov esi, dword [esp + 0x38]
mov word [edx + esi*2], ax
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x20]
and ecx, esi
xor ebx, ebx
dec ebx
xor esi, ebx
and eax, esi
or ecx, eax
mov eax, dword [esp + 0xc]
mov esi, ecx
add eax, eax
jmp 0x402700
sub esi, ecx
mov ecx, eax
mov ebx, edx
shr ecx, 5
sub eax, ecx
mov ecx, esi
mov word [ebp + edi*2], ax
mov eax, edi
lea eax, [edi + edi - 0x372cb71f]
xor eax, 0xc8d348e0
mov edi, eax
movzx eax, word [ebp + eax*2]
cmp ecx, 0xffffff
ja 0x402697
mov esi, dword [esp]
shl ebx, 8
shl ecx, 8
movzx edx, byte [esi]
inc esi
mov dword [esp], esi
or ebx, edx
mov edx, ecx
mov esi, ebx
shr edx, 0xb
imul edx, eax
sub esi, edx
jae 0x402788
mov ecx, 0x800
sub ecx, eax
shr ecx, 5
add ecx, eax
mov eax, edi
mov word [ebp + edi*2], cx
add eax, edi
jmp 0x4027aa
mov edx, esi
mov ecx, dword [esp + 4]
sub edi, ebp
shr edx, 5
mov ebp, edi
mov edi, eax
sub esi, edx
mov edx, dword [esp + 0x38]
mov word [ecx + edx*2], si
mov esi, dword [esp + 0xc]
add esi, esi
mov ecx, esi
and esi, 2
not ecx
and ecx, 0x4026339c
or esi, ecx
xor esi, 0x4026339d
xor ebx, ebx
mov eax, esi
mov esi, dword [esp + 8]
dec ebx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xc], eax
add eax, esi
lea edx, [ecx*8]
mov ecx, esi
xor ecx, ebx
xor edx, ebx
or edx, ecx
mov dword [esp + 0x38], ecx
xor edx, ebx
add eax, edx
mov ecx, eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x20], eax
neg eax
add eax, eax
sub ecx, eax
cmp ebp, 0xffffff
movzx ecx, word [ecx]
ja 0x4027f0
mov eax, dword [esp]
mov dword [esp + 0x4c], ecx
shl edi, 8
mov dword [esp + 8], esi
mov esi, 0xaae2966a
inc dword [esp]
shl ebp, 8
movzx ecx, byte [eax]
mov eax, edi
and edi, 0x551d6900
xor eax, ebx
and eax, esi
mov esi, 0xaae2966a
or edi, eax
mov eax, ecx
and ecx, 0xffffff95
xor eax, ebx
mov ebx, edi
and eax, esi
mov esi, dword [esp + 8]
or ecx, eax
xor ebx, ecx
mov ecx, dword [esp + 0x4c]
jmp 0x4027f2
sub ecx, edx
mov edx, eax
mov ebx, esi
shr edx, 5
sub eax, edx
mov edx, ecx
mov word [ebp + edi*2], ax
mov eax, edi
add eax, edi
not eax
and eax, 0x1406192f
xor eax, 0x1406192e
mov edi, eax
movzx eax, word [ebp + eax*2]
cmp edx, 0xffffff
ja 0x4027cb
mov esi, dword [esp]
shl ebx, 8
shl edx, 8
movzx ecx, byte [esi]
inc esi
mov dword [esp], esi
or ebx, ecx
mov ecx, edx
mov esi, ebx
shr ecx, 0xb
imul ecx, eax
sub esi, ecx
jae 0x40284f
mov edx, 0x800
sub edx, eax
shr edx, 5
add edx, eax
mov eax, edi
mov word [ebp + edi*2], dx
add eax, edi
jmp 0x402867
mov ebx, edi
mov edi, ebp
mov eax, ebx
shr edi, 0xb
imul edi, ecx
sub eax, edi
jae 0x4028b4
mov eax, 0x800
mov ebp, dword [esp + 4]
sub eax, ecx
shr eax, 5
add eax, ecx
mov ecx, dword [esp + 0x20]
mov word [ebp + ecx*2], ax
xor ecx, ecx
mov eax, edx
mov ebp, ebx
mov ebx, 0x53
dec ecx
and edx, ebx
and esi, ebx
mov ebx, ebp
xor eax, ecx
mov ecx, 0xd52c41ac
and eax, ecx
or edx, eax
mov eax, dword [esp + 0x38]
and eax, ecx
or esi, eax
mov eax, dword [esp + 0xc]
xor edx, esi
add eax, eax
jmp 0x4028ec
sub edx, ecx
mov ecx, eax
mov ebx, esi
shr ecx, 5
sub eax, ecx
mov ecx, edx
mov word [ebp + edi*2], ax
mov eax, edi
lea eax, [edi + edi + 1]
mov edi, eax
movzx eax, word [ebp + eax*2]
cmp ecx, 0xffffff
ja 0x402888
mov esi, dword [esp]
shl ebx, 8
shl ecx, 8
movzx edx, byte [esi]
inc esi
mov dword [esp], esi
or ebx, edx
mov esi, ecx
mov edx, ebx
shr esi, 0xb
imul esi, eax
sub edx, esi
jae 0x402973
mov ecx, 0x800
sub ecx, eax
shr ecx, 5
add ecx, eax
mov eax, edi
mov word [ebp + edi*2], cx
add eax, edi
jmp 0x40298b
mov esi, ecx
sub ebp, edi
mov edi, dword [esp + 4]
mov ebx, eax
shr esi, 5
sub ecx, esi
mov esi, ecx
mov ecx, dword [esp + 0x20]
mov word [edi + ecx*2], si
mov esi, dword [esp + 0xc]
mov edi, ebp
add esi, esi
mov ecx, esi
and esi, 2
not ecx
and ecx, 0xd583e93d
or esi, ecx
xor esi, 0xd583e93c
mov eax, esi
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
lea ebp, [edx + eax]
mov dword [esp + 0xc], eax
shl esi, 4
xor esi, edx
not esi
and esi, edx
add ebp, esi
cmp edi, 0xffffff
mov dword [esp + 0x20], ebp
movzx ebp, word [ecx + ebp*2]
ja 0x402928
mov ecx, dword [esp]
shl ebx, 8
shl edi, 8
movzx eax, byte [ecx]
inc ecx
mov dword [esp], ecx
or ebx, eax
mov ecx, edi
mov eax, ebx
shr ecx, 0xb
imul ecx, ebp
sub eax, ecx
jae 0x4029d8
mov eax, 0x800
mov edi, dword [esp + 0x20]
mov dword [esp + 8], ebx
sub eax, ebp
shr eax, 5
add eax, ebp
mov ebp, dword [esp + 4]
xor ebx, ebx
dec ebx
mov word [ebp + edi*2], ax
mov eax, esi
xor eax, ebx
and eax, edx
xor edx, ebx
and edx, esi
or edx, eax
mov eax, dword [esp + 0xc]
mov esi, edx
add eax, eax
jmp 0x402a15
sub ecx, esi
mov esi, eax
mov ebx, edx
shr esi, 5
sub eax, esi
mov esi, ecx
mov word [ebp + edi*2], ax
mov eax, edi
lea eax, [edi + edi + 1]
mov edi, eax
movzx eax, word [ebp + eax*2]
cmp esi, 0xffffff
ja 0x4029ac
mov edx, dword [esp]
shl ebx, 8
shl esi, 8
movzx ecx, byte [edx]
inc edx
mov dword [esp], edx
or ebx, ecx
mov edx, esi
mov ecx, ebx
shr edx, 0xb
imul edx, eax
sub ecx, edx
jae 0x402aa1
mov ecx, 0x800
sub ecx, eax
shr ecx, 5
add ecx, eax
mov eax, edi
mov word [ebp + edi*2], cx
add eax, edi
jmp 0x402ab9
sub edi, ecx
mov ecx, ebp
mov edx, dword [esp + 0x20]
mov dword [esp + 8], eax
shr ecx, 5
sub ebp, ecx
mov ecx, dword [esp + 4]
mov word [ecx + edx*2], bp
mov edx, dword [esp + 0xc]
mov ebp, ecx
add edx, edx
mov ecx, edx
and edx, 8
not ecx
and ecx, 0xcb5e85f6
or edx, ecx
mov ecx, edi
xor edx, 0xcb5e85f7
xor ebx, ebx
mov eax, edx
dec ebx
mov edx, dword [esp + 0x1c]
mov edi, esi
mov dword [esp + 0xc], eax
add eax, esi
xor edi, ebx
mov dword [esp + 0x38], edi
shl edx, 5
xor edx, ebx
or edx, edi
xor edx, ebx
add eax, edx
mov edi, eax
mov dword [esp + 0x20], eax
neg eax
mov edi, ebp
add eax, eax
sub edi, eax
cmp ecx, 0xffffff
movzx ebx, word [edi]
ja 0x402b00
mov edi, dword [esp + 8]
mov eax, dword [esp]
mov dword [esp + 8], ebx
mov dword [esp + 0x4c], esi
mov esi, 0x28e13ba6
shl edi, 8
xor ebx, ebx
movzx ebp, byte [eax]
mov eax, edi
dec ebx
and edi, 0xd71ec400
xor eax, ebx
mov ebx, 0x28e13ba6
and eax, ebx
or edi, eax
xor ebx, ebx
mov eax, ebp
and ebp, 0x59
inc dword [esp]
shl ecx, 8
dec ebx
xor eax, ebx
mov ebx, dword [esp + 8]
and eax, esi
mov esi, dword [esp + 0x4c]
or ebp, eax
xor edi, ebp
mov ebp, edi
jmp 0x402b04
sub esi, edx
mov edx, eax
mov ebx, ecx
shr edx, 5
sub eax, edx
mov edx, esi
mov word [ebp + edi*2], ax
mov eax, edi
lea eax, [edi + edi + 1]
mov edi, eax
movzx eax, word [ebp + eax*2]
cmp edx, 0xffffff
ja 0x402ada
mov esi, dword [esp]
shl ebx, 8
shl edx, 8
movzx ecx, byte [esi]
inc esi
mov dword [esp], esi
or ebx, ecx
mov ecx, edx
mov esi, ebx
shr ecx, 0xb
imul ecx, eax
sub esi, ecx
jae 0x402b62
mov edx, 0x800
sub edx, eax
shr edx, 5
add edx, eax
mov word [ebp + edi*2], dx
add edi, edi
jmp 0x402b8e
mov ebp, dword [esp + 8]
mov edi, ecx
mov eax, ebp
shr edi, 0xb
imul edi, ebx
sub eax, edi
jae 0x402c09
mov eax, 0x800
mov ecx, dword [esp + 0x20]
sub eax, ebx
shr eax, 5
add eax, ebx
mov ebx, dword [esp + 4]
mov word [ebx + ecx*2], ax
xor ecx, ecx
mov eax, edx
mov ebx, 0x13a
dec ecx
and edx, ebx
and esi, ebx
mov ebx, ebp
mov ebp, dword [esp + 4]
xor eax, ecx
mov ecx, 0xeda528c5
and eax, ecx
or edx, eax
mov eax, dword [esp + 0x38]
and eax, ecx
or esi, eax
mov eax, dword [esp + 0xc]
xor edx, esi
add eax, eax
jmp 0x402c2d
sub edx, ecx
mov ecx, eax
mov ebx, esi
shr ecx, 5
sub eax, ecx
mov ecx, edi
add ecx, edi
mov word [ebp + edi*2], ax
mov eax, ecx
and ecx, 0xffffffce
not eax
and eax, 0xb8083230
or ecx, eax
mov edi, ecx
mov ecx, edx
xor edi, 0xb8083231
movzx ebp, word [ebp + edi*2]
cmp ecx, 0xffffff
mov dword [esp + 0xc], edi
ja 0x402bda
mov edx, dword [esp]
shl ebx, 8
xor edi, edi
mov esi, ebx
dec edi
and ebx, 0x65b32700
xor esi, edi
mov edi, 0x9a4cd86e
and esi, edi
movzx eax, byte [edx]
or ebx, esi
xor edi, edi
inc edx
shl ecx, 8
dec edi
mov dword [esp], edx
mov esi, eax
and eax, 0xffffff91
xor esi, edi
mov edi, 0x9a4cd86e
and esi, edi
or eax, esi
xor ebx, eax
mov edi, ecx
mov eax, ebx
shr edi, 0xb
imul edi, ebp
sub eax, edi
jae 0x402cb1
mov eax, 0x800
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 4]
sub eax, ebp
shr eax, 5
add eax, ebp
mov word [ecx + edx*2], ax
jmp 0x402e45
mov esi, ebx
mov ebp, dword [esp + 4]
sub ecx, edi
shr esi, 5
mov edi, ecx
sub ebx, esi
mov esi, dword [esp + 0x20]
mov word [ebp + esi*2], bx
mov esi, dword [esp + 0xc]
mov ebx, eax
lea esi, [esi + esi + 1]
mov eax, esi
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xc], eax
add eax, edx
shl ecx, 6
xor ecx, edx
not ecx
and ecx, edx
add eax, ecx
cmp edi, 0xffffff
movzx esi, word [ebp + eax*2]
mov ebp, dword [esp]
ja 0x402c70
mov dword [esp + 0x20], eax
movzx eax, byte [ebp]
shl ebx, 8
inc ebp
shl edi, 8
mov dword [esp], ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
add ebx, dword [esp + 8]
mov ebp, edi
mov dword [esp + 8], ebx
shr ebp, 0xb
imul ebp, esi
sub ebx, ebp
jae 0x402cd3
mov edi, 0x800
mov ebx, dword [esp + 8]
sub edi, esi
shr edi, 5
add edi, esi
mov esi, dword [esp + 4]
mov word [esi + eax*2], di
xor esi, esi
mov eax, ecx
dec esi
xor eax, esi
and eax, edx
xor edx, esi
and edx, ecx
or edx, eax
mov eax, dword [esp + 0xc]
mov edi, edx
add eax, eax
jmp 0x402cf4
sub ecx, edi
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 4]
mov esi, ebp
mov ebx, eax
shr esi, 5
sub ebp, esi
mov word [edi + edx*2], bp
lea edx, [edx + edx + 1]
mov edi, ecx
jmp 0x402e78
sub edi, ebp
mov ebp, dword [esp + 4]
mov edx, esi
shr edx, 5
sub esi, edx
mov word [ebp + eax*2], si
mov eax, dword [esp + 0xc]
xor esi, esi
mov ebp, edi
mov edi, ecx
dec esi
lea eax, [eax + eax + 1]
mov cl, byte [esp + 0x50]
xor edx, edx
mov dword [esp + 0xc], eax
add eax, edi
mov dl, cl
mov ecx, edi
mov dword [esp + 8], edx
mov edx, dword [esp + 0x1c]
xor ecx, esi
mov dword [esp + 0x50], ecx
shl edx, 7
xor edx, esi
or edx, ecx
mov ecx, dword [esp + 4]
xor edx, esi
add eax, edx
cmp ebp, 0xffffff
mov dword [esp + 0x20], eax
movzx eax, word [ecx + eax*2]
mov ecx, edi
ja 0x402d49
shl ebx, 8
shl ebp, 8
mov esi, ebx
mov ebx, dword [esp]
movzx edi, byte [ebx]
inc ebx
mov dword [esp], ebx
mov ebx, esi
or ebx, edi
mov esi, dword [esp + 8]
mov dword [esp + 8], ebx
lea edi, [esi + esi*2]
mov esi, ebp
shr esi, 0xb
imul esi, eax
sub ebx, esi
jae 0x402dac
mov ebx, 0x800
mov ebp, dword [esp + 4]
sub ebx, eax
shr ebx, 5
add ebx, eax
mov eax, dword [esp + 0x20]
mov word [ebp + eax*2], bx
xor ebp, ebp
mov eax, edx
mov ebx, 0xf8
dec ebp
and edx, ebx
and ecx, ebx
mov ebx, dword [esp + 8]
xor eax, ebp
mov ebp, edi
mov edi, 0x81561f07
and eax, edi
or edx, eax
mov eax, dword [esp + 0x50]
and eax, edi
mov edi, ebp
or ecx, eax
mov eax, dword [esp + 0xc]
xor edx, ecx
add eax, eax
jmp 0x402dcb
mov ecx, eax
sub ebp, esi
mov esi, dword [esp + 4]
shr ecx, 5
sub eax, ecx
mov ecx, dword [esp + 0x20]
mov word [esi + ecx*2], ax
mov eax, dword [esp + 0xc]
mov esi, ebp
lea eax, [eax + eax + 1]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xc], eax
neg edi
shl ecx, 8
xor ecx, edx
not ecx
and ecx, edx
add edx, eax
add edx, ecx
mov ecx, dword [esp + 4]
cmp esi, 0xffffff
movzx eax, word [ecx + edx*2]
ja 0x402e14
mov ebp, edi
mov edi, dword [esp]
shl ebx, 8
shl esi, 8
movzx ecx, byte [edi]
inc edi
mov dword [esp], edi
mov edi, ebp
mov ebp, dword [esp + 4]
mov dword [esp + 8], ecx
add ebx, dword [esp + 8]
jmp 0x402e16
mov ebp, ecx
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + edi - 3]
mov edi, esi
shr edi, 0xb
mov dword [esp + 0x10], ecx
mov ecx, ebx
imul edi, eax
sub ecx, edi
jae 0x402e49
mov ecx, 0x800
sub ecx, eax
shr ecx, 5
add ecx, eax
mov word [ebp + edx*2], cx
mov edx, dword [esp + 0xc]
add edx, edx
jmp 0x402e78
sub esi, edi
mov edi, eax
mov ebx, ecx
shr edi, 5
sub eax, edi
mov edi, esi
mov word [ebp + edx*2], ax
mov edx, dword [esp + 0xc]
add edx, edx
mov eax, edx
and edx, 0xd8
not eax
and eax, 0x6efb5f26
or edx, eax
xor edx, 0x6efb5f27
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x40]
mov byte [eax + esi], dl
inc ebp
inc esi
jmp 0x403cc8
mov ebx, dword [esp + 8]
mov edi, ebp
mov ecx, ebx
mov dword [esp + 8], ebx
shr edi, 0xb
imul edi, edx
sub ecx, edi
jae 0x402f83
mov eax, 0x800
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 8]
sub eax, edx
shr eax, 5
add eax, edx
mov edx, dword [esp + 0x40]
mov word [ecx + esi*2 - 0xc00], ax
mov esi, dword [esp + 0x18]
mov ecx, 0
mov eax, esi
sub eax, dword [esp + 0x30]
cmovb ecx, dword [esp + 0x28]
add ecx, eax
mov al, byte [edx + ecx]
mov ecx, dword [esp + 0x2c]
mov byte [edx + esi], al
inc ecx
inc esi
xor eax, eax
cmp dword [esp + 0x10], 6
mov ebp, ecx
seta al
lea eax, [eax + eax + 9]
mov dword [esp + 0x10], eax
jmp 0x403cc8
mov ecx, esi
mov eax, dword [esp + 0x10]
mov edi, ebx
shr ecx, 5
sub edi, ebp
sub esi, ecx
mov ecx, dword [esp + 0x14]
cmp edi, 0xffffff
mov word [ecx + eax*2 + 0x50], si
movzx ecx, word [ecx + eax*2 + 0x68]
ja 0x402f63
mov eax, dword [esp]
shl edx, 8
xor ebp, ebp
mov ebx, edx
dec ebp
and edx, 0x96cf7500
xor ebx, ebp
mov ebp, 0x69308a97
and ebx, ebp
movzx esi, byte [eax]
or edx, ebx
xor ebp, ebp
inc eax
shl edi, 8
dec ebp
mov dword [esp], eax
mov ebx, esi
and esi, 0x68
xor ebx, ebp
mov ebp, 0x69308a97
and ebx, ebp
or esi, ebx
xor edx, esi
mov ebp, edi
mov eax, dword [esp + 0x3c]
mov ebx, edx
shr ebp, 0xb
imul ebp, ecx
sub ebx, ebp
jae 0x402fa2
mov esi, 0x800
sub esi, ecx
shr esi, 5
add esi, ecx
jmp 0x402fbb
mov eax, dword [esp + 0x14]
sub ebp, edi
mov edi, edx
shr edi, 5
sub edx, edi
mov edi, dword [esp + 0x34]
mov word [eax + esi*2 - 0xc00], dx
mov eax, dword [esp + 0x10]
jmp 0x402fdc
sub edi, ebp
mov edx, ecx
mov ebp, edi
mov edi, eax
mov eax, dword [esp + 0x44]
shr edx, 5
sub ecx, edx
mov edx, ebx
mov dword [esp + 0x44], edi
mov esi, ecx
mov ebx, eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x30], ebx
mov word [ecx + eax*2 + 0x68], si
mov esi, dword [esp + 0x34]
mov ecx, edx
mov dword [esp + 0x3c], esi
xor edx, edx
cmp eax, 6
mov esi, dword [esp + 0x64]
mov dword [esp + 0x34], edi
seta dl
lea eax, [edx + edx*2]
or eax, 8
movzx ebx, word [esi]
cmp ebp, 0xffffff
mov dword [esp + 4], esi
mov dword [esp + 0x10], eax
ja 0x40303c
mov eax, dword [esp]
shl ecx, 8
xor edx, edx
inc dword [esp]
shl ebp, 8
mov edi, ecx
dec edx
and ecx, 0xb73f7200
xor edi, edx
movzx esi, byte [eax]
mov eax, 0x48c08dc9
and edi, eax
mov eax, 0x48c08dc9
or ecx, edi
mov edi, esi
and esi, 0x36
xor edi, edx
and edi, eax
or esi, edi
xor ecx, esi
mov esi, ebp
mov edi, ecx
shr esi, 0xb
imul esi, ebx
sub edi, esi
jae 0x4030de
mov edi, 0x800
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x1c]
sub edi, ebx
shr edi, 5
add edi, ebx
cmp esi, 0xffffff
mov word [eax], di
movzx edi, word [eax + edx*2 + 2]
ja 0x4030a9
mov eax, dword [esp]
shl ecx, 8
mov edx, 0x33598253
mov ebp, ecx
movzx ebx, byte [eax]
xor eax, eax
and ecx, 0xcca67d00
inc dword [esp]
shl esi, 8
dec eax
xor ebp, eax
and ebp, edx
mov edx, 0x33598253
or ecx, ebp
mov ebp, ebx
and ebx, 0xffffffac
xor ebp, eax
and ebp, edx
or ebx, ebp
xor ecx, ebx
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x1c]
mov ebp, ecx
lea eax, [eax + edx*2]
mov edx, esi
shr edx, 0xb
imul edx, edi
sub ebp, edx
jae 0x4031b6
mov ebx, 0x800
mov esi, ecx
mov ecx, 2
sub ebx, edi
shr ebx, 5
add ebx, edi
jmp 0x4031ca
mov eax, dword [esp + 4]
mov ecx, ebx
sub ebp, esi
shr ecx, 5
sub ebx, ecx
cmp ebp, 0xffffff
mov word [eax], bx
movzx ecx, word [eax + 0x10]
ja 0x40310c
mov eax, dword [esp]
shl edi, 8
shl ebp, 8
movzx esi, byte [eax]
inc eax
mov dword [esp], eax
or edi, esi
mov esi, ebp
mov ebx, dword [esp + 0x28]
mov eax, edi
shr esi, 0xb
imul esi, ecx
sub eax, esi
jae 0x4031fb
mov ebx, 0x800
mov eax, dword [esp + 4]
sub ebx, ecx
shr ebx, 5
add ebx, ecx
mov ecx, dword [esp + 0x1c]
add eax, 0x10
cmp esi, 0xffffff
mov word [eax], bx
mov dword [esp + 4], eax
movzx ebx, word [eax + ecx*2 + 2]
ja 0x40317f
mov eax, dword [esp]
shl edi, 8
mov edx, 0x46a06189
mov ebp, edi
movzx ecx, byte [eax]
xor eax, eax
and edi, 0xb95f9e00
inc dword [esp]
shl esi, 8
dec eax
xor ebp, eax
and ebp, edx
or edi, ebp
mov ebp, ecx
and ecx, 0x76
xor ebp, eax
and ebp, edx
or ecx, ebp
xor edi, ecx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
mov ebp, edi
lea eax, [eax + ecx*2]
mov ecx, esi
shr ecx, 0xb
mov dword [esp + 4], eax
imul ecx, ebx
sub ebp, ecx
jae 0x403834
mov edx, 0x800
mov eax, 2
sub edx, ebx
shr edx, 5
add edx, ebx
jmp 0x403848
mov ecx, edi
sub esi, edx
shr ecx, 5
mov edx, esi
mov esi, ebp
sub edi, ecx
mov ecx, 3
mov ebx, edi
mov word [eax + 2], bx
cmp edx, 0xffffff
mov dword [esp + 0x24], ecx
movzx edi, word [eax + ecx*2]
ja 0x4032e3
mov ebx, dword [esp]
mov ecx, esi
shl edx, 8
shl ecx, 8
movzx esi, byte [ebx]
inc ebx
mov dword [esp], ebx
or ecx, esi
jmp 0x4032e5
mov dword [esp + 8], eax
mov eax, ecx
mov edi, dword [esp + 4]
sub ebp, esi
shr eax, 5
mov edx, ebp
sub ecx, eax
xor eax, eax
inc eax
mov word [edi + 0x10], cx
mov dword [esp + 0x24], eax
movzx eax, word [edi + eax*2 + 0x200]
cmp edx, 0xffffff
ja 0x40326f
mov edi, dword [esp + 8]
mov ebp, dword [esp]
shl edi, 8
xor ebx, ebx
movzx ecx, byte [ebp]
mov esi, edi
dec ebx
and edi, 0xf565a200
xor esi, ebx
mov ebx, 0xa9a5d77
and esi, ebx
or edi, esi
xor ebx, ebx
mov esi, ecx
and ecx, 0xffffff88
shl edx, 8
inc ebp
dec ebx
mov dword [esp], ebp
xor esi, ebx
mov ebx, 0xa9a5d77
and esi, ebx
mov ebx, dword [esp + 0x28]
or ecx, esi
xor edi, ecx
jmp 0x403273
mov edi, dword [esp + 8]
mov ecx, edx
shr edx, 0xb
mov esi, edi
imul edx, eax
sub esi, edx
jae 0x4032a5
mov ecx, 0x800
mov dword [esp + 8], edi
mov edi, dword [esp + 4]
sub ecx, eax
shr ecx, 5
add ecx, eax
mov eax, dword [esp + 0x24]
mov word [edi + eax*2 + 0x200], cx
add eax, eax
jmp 0x4032ca
mov edi, eax
sub ecx, edx
mov edx, dword [esp + 0x24]
mov dword [esp + 8], esi
shr edi, 5
sub eax, edi
mov edi, dword [esp + 4]
mov word [edi + edx*2 + 0x200], ax
mov eax, edx
lea eax, [edx + edx + 1]
mov edx, ecx
mov esi, dword [esp + 0x18]
cmp eax, 0x100
jb 0x403215
add eax, 0xffffff10
jmp 0x4033cf
mov ecx, esi
mov esi, edx
mov ebx, ecx
shr esi, 0xb
imul esi, edi
sub ebx, esi
jae 0x40330d
mov edx, 0x800
mov ebx, ecx
mov ecx, dword [esp + 0x24]
sub edx, edi
shr edx, 5
add edx, edi
mov word [eax + ecx*2], dx
add ecx, ecx
jmp 0x403337
mov ecx, edi
sub edx, esi
shr ecx, 5
sub edi, ecx
mov ecx, dword [esp + 0x24]
mov word [eax + ecx*2], di
add ecx, ecx
mov esi, ecx
and ecx, 2
not esi
and esi, 0xff4a1875
or ecx, esi
mov esi, edx
xor ecx, 0xff4a1874
movzx edx, word [eax + ecx*2]
cmp esi, 0xffffff
mov dword [esp + 0x24], ecx
ja 0x40335e
mov ebp, dword [esp]
mov ecx, ebx
shl esi, 8
shl ecx, 8
movzx edi, byte [ebp]
inc ebp
mov dword [esp], ebp
or ecx, edi
jmp 0x403360
mov ecx, ebx
mov edi, esi
mov ebx, ecx
shr edi, 0xb
imul edi, edx
sub ebx, edi
jae 0x403394
mov esi, 0x800
mov ebx, ecx
mov ecx, dword [esp + 0x24]
sub esi, edx
shr esi, 5
add esi, edx
mov edx, edi
mov word [eax + ecx*2], si
mov eax, ecx
mov esi, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esp + 0x28]
jmp 0x4033c6
mov ecx, edx
sub esi, edi
shr ecx, 5
sub edx, ecx
mov ecx, dword [esp + 0x24]
mov word [eax + ecx*2], dx
add ecx, ecx
mov edx, esi
mov esi, dword [esp + 0x18]
mov eax, ecx
and ecx, 0xfffffffc
not eax
and eax, 0xccd33512
or ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x28]
xor eax, 0xccd33513
mov dword [esp + 8], ebx
add eax, 0xfffffff8
mov ebx, ecx
cmp dword [esp + 0x10], 0xc
mov dword [esp + 0x24], eax
jb 0x403c4b
mov ecx, dword [esp + 0x24]
mov eax, 3
mov ebx, dword [esp + 0x68]
cmp ecx, eax
mov eax, 3
cmovb eax, ecx
shl eax, 7
cmp edx, 0xffffff
mov dword [esp + 4], eax
movzx eax, word [ebx + eax + 2]
ja 0x403452
mov esi, edx
mov edx, dword [esp + 8]
mov ebp, dword [esp]
mov dword [esp + 8], eax
shl edx, 8
xor edi, edi
movzx eax, byte [ebp]
mov ecx, edx
dec edi
and edx, 0xb371c300
xor ecx, edi
mov edi, 0x4c8e3cb0
and ecx, edi
or edx, ecx
xor edi, edi
mov ecx, eax
and eax, 0x4f
shl esi, 8
inc ebp
dec edi
xor ecx, edi
mov edi, 0x4c8e3cb0
and ecx, edi
or eax, ecx
xor edx, eax
mov eax, dword [esp + 8]
jmp 0x40345b
mov esi, edx
mov ebp, dword [esp]
mov edx, dword [esp + 8]
mov edi, dword [esp + 4]
mov ecx, esi
mov dword [esp + 0xc], esi
mov dword [esp], ebp
shr ecx, 0xb
imul ecx, eax
add edi, ebx
mov ebx, edx
sub ebx, ecx
jae 0x40348d
mov ebp, 0x800
mov esi, edx
mov edx, 2
sub ebp, eax
mov ebx, esi
shr ebp, 5
add ebp, eax
jmp 0x4034a3
mov esi, dword [esp + 0xc]
mov edx, 3
sub esi, ecx
mov ecx, eax
shr ecx, 5
sub eax, ecx
mov ecx, esi
mov ebp, eax
mov word [edi + 2], bp
mov dword [esp + 4], edi
cmp ecx, 0xffffff
movzx edi, word [edi + edx*2]
ja 0x4034f2
mov eax, dword [esp]
shl ebx, 8
xor ebp, ebp
dec ebp
movzx esi, byte [eax]
mov eax, ebx
xor ebx, ebp
mov ebp, 0x7f2f41f9
and ebx, ebp
and eax, 0x80d0be00
or eax, ebx
xor ebp, ebp
inc dword [esp]
shl ecx, 8
dec ebp
mov ebx, esi
and esi, 6
xor ebx, ebp
mov ebp, 0x7f2f41f9
and ebx, ebp
or esi, ebx
mov ebx, eax
xor ebx, esi
mov esi, ecx
mov ebp, ebx
shr esi, 0xb
imul esi, edi
sub ebp, esi
jae 0x40351a
mov ecx, 0x800
mov eax, dword [esp + 4]
mov ebp, ebx
sub ecx, edi
shr ecx, 5
add ecx, edi
mov word [eax + edx*2], cx
add edx, edx
jmp 0x40353a
mov eax, dword [esp + 4]
sub ecx, esi
mov esi, edi
shr esi, 5
sub edi, esi
mov esi, ecx
mov word [eax + edx*2], di
lea edx, [edx + edx - 0x428bb160]
xor edx, 0xbd744ea1
mov ebx, dword [esp]
movzx edi, word [eax + edx*2]
cmp esi, 0xffffff
ja 0x40355c
movzx ecx, byte [ebx]
shl ebp, 8
inc ebx
shl esi, 8
mov eax, ebp
mov dword [esp], ebx
or eax, ecx
jmp 0x40355e
mov eax, ebp
mov ecx, esi
mov ebp, eax
shr ecx, 0xb
imul ecx, edi
sub ebp, ecx
jae 0x403586
mov esi, 0x800
mov ebp, eax
mov eax, dword [esp + 4]
sub esi, edi
shr esi, 5
add esi, edi
mov word [eax + edx*2], si
add edx, edx
jmp 0x4035b0
mov eax, dword [esp + 4]
sub esi, ecx
mov ecx, edi
shr ecx, 5
sub edi, ecx
mov word [eax + edx*2], di
add edx, edx
mov ecx, edx
and edx, 6
not ecx
and ecx, 0x98ae52b9
or edx, ecx
mov ecx, esi
xor edx, 0x98ae52b8
mov ebx, dword [esp]
movzx edi, word [eax + edx*2]
cmp ecx, 0xffffff
ja 0x4035d2
movzx esi, byte [ebx]
shl ebp, 8
inc ebx
shl ecx, 8
mov eax, ebp
mov dword [esp], ebx
or eax, esi
jmp 0x4035d4
mov eax, ebp
mov esi, ecx
mov ebp, eax
shr esi, 0xb
imul esi, edi
sub ebp, esi
jae 0x4035fc
mov ecx, 0x800
mov ebp, eax
mov eax, dword [esp + 4]
sub ecx, edi
shr ecx, 5
add ecx, edi
mov word [eax + edx*2], cx
add edx, edx
jmp 0x403626
mov eax, dword [esp + 4]
sub ecx, esi
mov esi, edi
shr esi, 5
sub edi, esi
mov word [eax + edx*2], di
add edx, edx
mov esi, edx
and edx, 4
not esi
and esi, 0x5523b1fa
or edx, esi
mov esi, ecx
xor edx, 0x5523b1fb
mov ebx, dword [esp]
movzx edi, word [eax + edx*2]
cmp esi, 0xffffff
ja 0x403648
movzx ecx, byte [ebx]
shl ebp, 8
inc ebx
shl esi, 8
mov eax, ebp
mov dword [esp], ebx
or eax, ecx
jmp 0x40364a
mov eax, ebp
mov ecx, esi
mov ebp, eax
shr ecx, 0xb
imul ecx, edi
sub ebp, ecx
jae 0x403670
mov esi, 0x800
sub esi, edi
shr esi, 5
add esi, edi
mov edi, dword [esp + 4]
mov word [edi + edx*2], si
add edx, edx
jmp 0x40369e
mov eax, dword [esp + 4]
sub esi, ecx
mov ecx, edi
shr ecx, 5
sub edi, ecx
mov word [eax + edx*2], di
add edx, edx
mov edi, eax
mov eax, ebp
mov ecx, edx
and edx, 0xffffffea
not ecx
and ecx, 0x3d29edd5
or edx, ecx
mov ecx, esi
xor edx, 0x3d29edd4
mov ebx, dword [esp]
movzx esi, word [edi + edx*2]
cmp ecx, 0xffffff
ja 0x4036bc
movzx edi, byte [ebx]
shl eax, 8
inc ebx
shl ecx, 8
mov dword [esp], ebx
or eax, edi
mov edi, ecx
mov ebx, dword [esp + 0x28]
mov ebp, eax
shr edi, 0xb
imul edi, esi
sub ebp, edi
jae 0x4036ee
mov ecx, 0x800
mov dword [esp + 0xc], edi
mov dword [esp + 8], eax
sub ecx, esi
shr ecx, 5
add ecx, esi
mov esi, dword [esp + 4]
mov word [esi + edx*2], cx
add edx, edx
jmp 0x40371d
mov eax, dword [esp + 4]
sub ecx, edi
mov edi, esi
mov dword [esp + 8], ebp
shr edi, 5
mov dword [esp + 0xc], ecx
sub esi, edi
mov word [eax + edx*2], si
add edx, edx
mov eax, edx
and edx, 0xffffffc8
not eax
and eax, 0x55ef2836
or edx, eax
xor edx, 0x55ef2837
mov ecx, dword [esp + 0x10]
add edx, 0xffffffc0
cmp edx, 4
jb 0x403c01
mov eax, edx
mov ecx, edx
or eax, 2
shr ecx, 1
and eax, 3
cmp edx, 0xd
ja 0x4038cc
dec ecx
mov edx, dword [esp + 0xc]
shl eax, cl
inc eax
xor edi, edi
inc edi
mov esi, dword [esp + 0x14]
cmp edx, 0xffffff
mov dword [esp + 0x1c], edi
movzx esi, word [esi + eax*2 - 0xd00]
ja 0x4037b7
mov ebp, dword [esp + 8]
mov dword [esp + 4], eax
mov eax, dword [esp]
mov dword [esp + 0xc], edx
shl ebp, 8
xor edx, edx
movzx edi, byte [eax]
mov eax, 0xfd3900b2
mov ebx, ebp
dec edx
and ebp, 0x2c6ff00
xor ebx, edx
mov edx, 0xfd3900b2
and ebx, edx
or ebp, ebx
xor edx, edx
mov ebx, edi
and edi, 0x4d
inc dword [esp]
dec edx
xor ebx, edx
mov edx, dword [esp + 0xc]
and ebx, eax
mov eax, dword [esp + 4]
or edi, ebx
xor ebp, edi
shl edx, 8
mov ebx, ebp
jmp 0x4037bb
mov ebx, dword [esp + 8]
mov ebp, edx
shr edx, 0xb
mov dword [esp + 8], ebx
imul edx, esi
sub ebx, edx
jae 0x4037f3
mov ebx, 0x800
mov edi, dword [esp + 0x1c]
mov ebp, eax
sub ebx, esi
shr ebx, 5
add ebx, esi
mov esi, dword [esp + 0x14]
mov word [esi + eax*2 - 0xd00], bx
mov esi, edi
mov eax, edx
add edi, edi
mov eax, ebp
jmp 0x403816
mov edi, esi
sub ebp, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 8], ebx
shr edi, 5
sub esi, edi
mov edi, dword [esp + 0x1c]
mov word [edx + eax*2 - 0xd00], si
mov edx, ebp
add edi, edi
mov esi, edi
mov ebx, dword [esp + 0x28]
add eax, esi
dec ecx
jne 0x40374d
mov ecx, dword [esp + 0x10]
sub eax, edi
mov dword [esp + 0xc], edx
mov edx, eax
jmp 0x403c01
sub esi, ecx
mov ecx, ebx
mov eax, 3
mov edi, ebp
shr ecx, 5
sub ebx, ecx
mov ecx, esi
mov edx, ebx
mov esi, dword [esp + 4]
cmp ecx, 0xffffff
mov word [esi + 2], dx
movzx esi, word [esi + eax*2]
ja 0x40389f
mov dword [esp + 0x24], eax
mov eax, dword [esp]
shl edi, 8
xor ebp, ebp
mov ebx, edi
dec ebp
and edi, 0x40a9b500
xor ebx, ebp
mov ebp, 0xbf564a11
and ebx, ebp
movzx edx, byte [eax]
or edi, ebx
xor ebp, ebp
inc eax
shl ecx, 8
dec ebp
mov dword [esp], eax
mov eax, dword [esp + 0x24]
mov ebx, edx
and edx, 0xffffffee
xor ebx, ebp
mov ebp, 0xbf564a11
and ebx, ebp
or edx, ebx
xor edi, edx
mov edx, ecx
mov ebx, edi
shr edx, 0xb
imul edx, esi
sub ebx, edx
jae 0x40394a
mov ecx, 0x800
sub ecx, esi
shr ecx, 5
add ecx, esi
mov esi, dword [esp + 4]
mov word [esi + eax*2], cx
add eax, eax
jmp 0x40396d
mov edi, dword [esp + 8]
mov edx, dword [esp + 0xc]
add ecx, 0xfffffffb
mov dword [esp + 4], eax
cmp edx, 0xffffff
ja 0x4038f5
mov esi, dword [esp]
shl edi, 8
shl edx, 8
movzx eax, byte [esi]
inc esi
mov dword [esp], esi
or edi, eax
mov ebp, edx
mov eax, dword [esp + 4]
shr edx, 1
mov esi, edi
sub esi, edx
mov edi, edx
mov ebx, esi
sar ebx, 0x1f
lea eax, [ebx + eax*2 + 1]
mov dword [esp + 4], eax
xor eax, eax
dec eax
xor ebx, eax
xor edi, eax
or edi, ebx
xor edi, eax
add edi, esi
dec ecx
jne 0x4038db
mov eax, dword [esp + 0x14]
cmp ebp, 0x1ffffff
movzx esi, word [eax + 2]
mov eax, edx
ja 0x4039ee
mov ebx, dword [esp]
shl edi, 8
shl eax, 8
movzx ecx, byte [ebx]
inc ebx
or edi, ecx
jmp 0x4039f1
sub ecx, edx
mov edx, esi
mov edi, ebx
shr edx, 5
sub esi, edx
mov edx, dword [esp + 4]
mov word [edx + eax*2], si
lea eax, [eax + eax - 0xa0b088]
mov esi, edx
mov edx, ecx
xor eax, 0xff5f4f79
mov ebx, dword [esp + 0x28]
movzx esi, word [esi + eax*2]
cmp edx, 0xffffff
ja 0x403995
mov ecx, eax
mov eax, dword [esp]
shl edi, 8
shl edx, 8
movzx ebp, byte [eax]
inc eax
mov dword [esp], eax
mov eax, ecx
or ebp, edi
jmp 0x403997
mov ebp, edi
mov ecx, edx
mov edi, esi
mov dword [esp + 8], ebp
shr ecx, 0xb
imul ecx, esi
mov esi, ebp
sub esi, ecx
jae 0x4039cc
mov edx, 0x800
mov esi, dword [esp + 4]
sub edx, edi
shr edx, 5
add edx, edi
mov word [esi + eax*2], dx
mov esi, dword [esp + 0x18]
add eax, eax
mov edx, ecx
jmp 0x4033cf
mov ebp, edi
shr edi, 5
mov dword [esp + 8], esi
mov esi, dword [esp + 0x18]
sub edx, ecx
sub ebp, edi
mov edi, dword [esp + 4]
mov word [edi + eax*2], bp
lea eax, [eax + eax + 1]
jmp 0x4033cf
mov ebx, dword [esp]
mov edx, eax
mov ecx, edi
shr edx, 0xb
imul edx, esi
sub ecx, edx
jae 0x403a14
mov ebp, 0x800
mov ecx, edi
sub ebp, esi
shr ebp, 5
add ebp, esi
mov esi, 2
jmp 0x403a26
sub eax, edx
mov edx, esi
shr edx, 5
sub esi, edx
mov edx, eax
mov ebp, esi
mov esi, 3
mov eax, dword [esp + 0x14]
mov dword [esp + 8], esi
cmp edx, 0xffffff
mov word [eax + 2], bp
movzx esi, word [eax + esi*2]
ja 0x403a4e
movzx eax, byte [ebx]
mov ebp, ecx
shl edx, 8
inc ebx
shl ebp, 8
or ebp, eax
jmp 0x403a50
mov ebp, ecx
mov edi, edx
mov ecx, ebp
mov dword [esp], ebx
shr edi, 0xb
imul edi, esi
sub ecx, edi
jae 0x403a80
mov ecx, 0x800
mov eax, dword [esp + 0x14]
mov ebx, ebp
sub ecx, esi
shr ecx, 5
add ecx, esi
mov esi, dword [esp + 8]
mov word [eax + esi*2], cx
add esi, 2
jmp 0x403aa7
sub edx, edi
mov edi, esi
mov eax, dword [esp + 0x14]
mov ebx, ecx
shr edi, 5
sub esi, edi
mov edi, dword [esp + 8]
mov word [eax + edi*2], si
mov esi, edi
mov edi, edx
or esi, 0x45c62480
xor esi, 0x45c62484
movzx ebp, word [eax + esi*2]
cmp edi, 0xffffff
ja 0x403ac4
mov eax, dword [esp]
shl ebx, 8
shl edi, 8
movzx ecx, byte [eax]
inc eax
or ebx, ecx
jmp 0x403ac7
mov eax, dword [esp]
mov edx, edi
mov ecx, ebx
mov dword [esp], eax
shr edx, 0xb
imul edx, ebp
sub ecx, edx
jae 0x403aed
mov eax, ebp
mov ebp, 0x800
mov edi, 4
sub ebp, eax
shr ebp, 5
add ebp, eax
jmp 0x403aff
sub edi, edx
mov edx, ebp
mov ebx, ecx
shr edx, 5
sub ebp, edx
mov edx, edi
mov edi, 8
add edi, esi
mov eax, dword [esp + 0x14]
mov ecx, edi
mov dword [esp + 0x1c], edi
neg ecx
add ecx, ecx
neg ecx
mov word [eax + esi*2], bp
cmp edx, 0xffffff
movzx ecx, word [eax + ecx]
ja 0x403b62
mov esi, dword [esp]
shl ebx, 8
xor ebp, ebp
mov dword [esp + 8], ecx
mov ecx, 0xd54f179a
shl edx, 8
dec ebp
mov eax, ebx
xor ebx, ebp
and eax, 0x2ab0e800
and ebx, ecx
mov ecx, 0xd54f179a
movzx edi, byte [esi]
or eax, ebx
inc esi
mov dword [esp], esi
mov ebx, edi
and edi, 0x65
xor ebx, ebp
and ebx, ecx
mov ecx, dword [esp + 8]
or edi, ebx
mov ebx, eax
xor ebx, edi
mov eax, dword [esp + 4]
mov ebp, ebx
shl eax, 4
mov dword [esp + 4], eax
mov eax, edx
shr eax, 0xb
imul eax, ecx
sub ebx, eax
jae 0x403ba0
mov edx, 0x800
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov dword [esp + 8], ebp
sub edx, ecx
shr edx, 5
add edx, ecx
mov word [eax + edi*2], dx
add edi, 0xfffffff8
jmp 0x403bbd
mov edi, ecx
sub edx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 8], ebx
shr edi, 5
mov dword [esp + 0xc], edx
sub ecx, edi
mov edi, dword [esp + 0x1c]
mov word [eax + edi*2], cx
xor eax, eax
mov edx, edi
mov esi, 0x25c1dc2d
mov ebx, 0xda3e23d2
mov ebp, 0x25c1dc2d
dec eax
and edi, esi
xor edx, eax
mov ecx, edx
and ecx, ebx
or edi, ecx
mov ecx, dword [esp + 4]
mov esi, ecx
and ecx, ebp
xor esi, eax
or edx, esi
and esi, ebx
or ecx, esi
xor edx, eax
xor ecx, edi
or edx, ecx
cmp edx, eax
je 0x403db2
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x58]
xor eax, eax
cmp ecx, 0x12
seta cl
test esi, esi
cmove esi, dword [esp + 0x2c]
cmp edx, esi
jae 0x403dd9
mov al, cl
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x34]
inc edx
lea eax, [eax + eax*2 + 7]
mov dword [esp + 0x10], eax
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x30], edx
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x54]
sub eax, esi
je 0x403dd0
mov ebp, dword [esp + 0x24]
mov dword [esp + 0xc], edx
mov edx, esi
mov ecx, 0
add ebp, 2
cmp eax, ebp
cmovae eax, ebp
sub edx, dword [esp + 0x30]
cmovb ecx, ebx
add dword [esp + 0x2c], eax
sub ebp, eax
add ecx, edx
mov edx, ebx
mov dword [esp + 0x24], ebp
sub edx, ecx
cmp eax, edx
jbe 0x403ca3
mov ebp, ebx
mov ebx, dword [esp + 0x40]
xor edi, edi
mov dl, byte [ebx + ecx]
inc ecx
mov byte [ebx + esi], dl
inc esi
cmp ecx, ebp
cmove ecx, edi
dec eax
jne 0x403c91
jmp 0x403cbc
mov edx, dword [esp + 0x40]
sub ecx, esi
add edx, esi
mov esi, eax
mov bl, byte [edx + ecx]
mov byte [edx], bl
inc edx
dec esi
jne 0x403cad
mov esi, dword [esp + 0x18]
add esi, eax
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 8]
mov edi, dword [esp + 0xc]
mov eax, dword [esp]
mov dword [esp + 0x18], esi
cmp eax, dword [esp + 0x90]
jae 0x403ce8
cmp esi, dword [esp + 0x54]
jae 0x403ce8
mov al, 1
test al, al
jne 0x4020c0
mov dword [esp + 0x2c], ebp
cmp edi, 0xffffff
mov ebp, edi
ja 0x403d29
shl ebx, 8
xor edi, edi
mov esi, 0xb867aefe
shl ebp, 8
mov eax, ebx
mov ecx, ebx
mov ebx, dword [esp]
dec edi
xor ecx, edi
and eax, 0x47985100
and ecx, esi
or eax, ecx
movzx edx, byte [ebx]
inc ebx
mov ecx, edx
and edx, 1
xor ecx, edi
and ecx, esi
or edx, ecx
xor edx, eax
jmp 0x403d2e
mov edx, ebx
mov ebx, dword [esp]
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x34]
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x20], ebp
mov dword [esi + 0x24], edx
mov dword [esi + 0x44], eax
mov dword [esi + 0x18], ecx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov dword [esi + 0x28], ecx
mov dword [esi + 0x30], edx
mov edx, dword [esp + 0x3c]
mov dword [esi + 0x34], edi
mov edi, dword [esp + 0x44]
mov dword [esi + 0x38], edx
mov edx, dword [esp + 0x10]
mov dword [esi + 0x3c], edi
mov dword [esi + 0x40], edx
cmp dword [esi + 0x2c], 0
jne 0x403d83
mov eax, dword [esi + 4]
cmp ecx, eax
jb 0x403d83
mov dword [esi + 0x2c], eax
mov edi, dword [esp + 0x60]
mov ecx, esi
mov edx, edi
call fcn.004015b4
xor eax, eax
cmp dword [esi + 0x18], edi
jae 0x403de7
mov ecx, dword [esp + 0x90]
cmp dword [esi + 0x1c], ecx
jae 0x403de7
cmp dword [esi + 0x44], 0x112
jb 0x401fbd
jmp 0x403de7
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 8]
mov edi, dword [esp + 0xc]
add dword [esp + 0x10], 0xfffffff4
mov dword [esp + 0x24], 0x112
jmp 0x403ce8
mov eax, dword [esp + 0x48]
mov dword [eax + 0x18], esi
jmp 0x403de4
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x18]
mov dword [eax + 0x18], ecx
xor eax, eax
inc eax
add esp, 0x7c
pop esi
pop edi
pop ebx
pop ebp
ret 4