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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xd8
mov ebx, dword [esp + 0xec]
mov dword [esp + 0x10], edx
cmp ebx, 9
jbe 0x40306f
mov ebp, eax
mov eax, ecx
movzx ecx, word [ecx]
movzx edx, word [eax + 2]
mov dword [esp], edx
mov word [esp + 8], dx
movzx edx, word [eax + 4]
mov edi, edx
mov word [esp + 0x18], dx
mov dword [esp + 4], edx
mov edx, dword [esp]
add edx, ecx
add edx, edi
mov edi, ebx
sub edi, edx
mov dword [esp + 0x1c], edi
lea edx, [edi - 6]
mov edi, dword [esp + 0xf0]
mov edi, dword [edi]
mov dword [esp + 0x20], edi
cmp ebx, edx
jae 0x403088
mov edx, 0xffffffec
add esp, 0xd8
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
test ecx, ecx
je 0x4031b8
lea ebx, [eax + 0xa]
lea edi, [eax + 6]
mov dword [esp + 0x3c], ebx
movzx ebx, byte [eax + ecx + 5]
mov dword [esp + 0x14], edi
cmp ecx, 3
ja 0x403170
mov dword [esp + 0x90], edi
movzx edi, byte [eax + 6]
mov dword [esp + 0x88], edi
cmp cx, 2
je 0x4030d3
cmp cx, 3
jne 0x4030e3
movzx esi, byte [eax + 8]
shl esi, 0x10
add edi, esi
movzx eax, byte [eax + 7]
shl eax, 8
add eax, edi
mov dword [esp + 0x88], eax
test bl, bl
je 0x40306f
mov eax, 5
bsr ebx, ebx
sub eax, ecx
shl eax, 3
sub eax, ebx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x8c], eax
mov eax, dword [esp]
test eax, eax
je 0x4031b8
add ecx, dword [esp + 0x14]
lea esi, [ecx + 4]
mov dword [esp + 0x40], ecx
mov ebx, ecx
mov dword [esp + 0x54], esi
mov esi, dword [esp]
movzx eax, byte [ecx + esi - 1]
cmp esi, 3
jbe 0x4031c8
lea ebx, [ecx + esi - 4]
mov ecx, dword [ebx]
mov dword [esp + 0x44], ebx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x9c], ecx
test al, al
je 0x4031a0
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0xc], ecx
mov eax, ecx
jmp 0x403218
lea eax, [edi + ecx - 4]
mov dword [esp + 0x24], eax
mov dword [esp + 0x90], eax
mov eax, dword [eax]
mov dword [esp + 0x88], eax
test bl, bl
je 0x4031a0
bsr ebx, ebx
mov eax, 8
sub eax, ebx
mov dword [esp + 0x48], eax
jmp 0x403102
add esp, 0xd8
mov edx, 0xffffffff
pop ebx
mov eax, edx
pop esi
pop edi
pop ebp
ret
mov edx, 0xffffffb8
jmp 0x403074
mov dword [esp + 0xa4], ecx
movzx esi, word [esp + 8]
movzx ecx, byte [ecx]
mov dword [esp + 0x9c], ecx
cmp si, 2
je 0x403659
cmp si, 3
je 0x403650
test al, al
je 0x40306f
bsr eax, eax
mov ecx, 5
sub ecx, dword [esp]
shl ecx, 3
sub ecx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x44], eax
mov eax, ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0xa0], eax
test ecx, ecx
je 0x4031b8
mov edi, dword [esp]
mov esi, dword [esp + 4]
add edi, dword [esp + 0x40]
lea eax, [edi + 4]
mov dword [esp + 0x60], edi
mov dword [esp + 0x58], eax
movzx eax, byte [edi + esi - 1]
cmp esi, 3
ja 0x403678
movzx ecx, byte [edi]
movzx esi, word [esp + 0x18]
mov dword [esp + 0xb8], edi
mov dword [esp + 0xb0], ecx
cmp si, 2
je 0x403276
cmp si, 3
jne 0x40328a
movzx ebx, byte [edi + 2]
shl ebx, 0x10
add ecx, ebx
mov ebx, dword [esp + 0x60]
movzx ebx, byte [ebx + 1]
shl ebx, 8
add ebx, ecx
mov dword [esp + 0xb0], ebx
test al, al
je 0x40306f
bsr eax, eax
mov ecx, 5
sub ecx, dword [esp + 4]
shl ecx, 3
sub ecx, eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x4c], eax
mov eax, ecx
mov dword [esp + 0xb4], eax
test edx, edx
je 0x4031b8
mov eax, dword [esp + 4]
mov esi, dword [esp + 0x1c]
add eax, dword [esp + 0x60]
lea ebx, [eax + 4]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x5c], ebx
movzx ebx, byte [eax + esi - 7]
cmp edx, 3
jbe 0x4038b0
lea eax, [eax + esi - 0xa]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xcc], eax
mov eax, dword [eax]
mov dword [esp + 0xc4], eax
test bl, bl
je 0x4031a0
movzx eax, bl
mov ecx, 8
bsr eax, eax
sub ecx, eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc8], ecx
cmp edx, 0xffffff88
ja 0x403074
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0xf0]
lea eax, [ebp + ebx]
lea edi, [esi + 4]
mov dword [esp + 0x84], eax
sub eax, 3
mov dword [esp + 0x64], eax
lea eax, [ebx + 3]
shr eax, 2
lea edx, [ebp + eax]
mov esi, eax
lea ecx, [edx + eax]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x78], edx
add esi, ecx
mov dword [esp + 0x7c], ecx
shr eax, 0x10
mov dword [esp + 0x80], esi
movzx eax, al
mov dword [esp + 0x74], eax
cmp dword [esp + 0x64], esi
jbe 0x4045bc
mov ebx, dword [esp + 0x88]
neg eax
mov dword [esp], edi
and eax, 0x1f
mov dword [esp + 0x50], ebp
mov edi, dword [esp + 0x48]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x18], esi
mov ebp, dword [esp + 0x70]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0xb0]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0xc4]
mov dword [esp + 0x20], edx
mov dword [esp + 0x38], ebx
mov byte [esp + 0x68], 0
mov byte [esp + 0x69], 0
mov byte [esp + 0x6a], 0
mov byte [esp + 0x6b], 0
mov dword [esp + 4], eax
jmp 0x4034a9
mov eax, edi
mov byte [esp + 0x68], 1
and edi, 7
shr eax, 3
sub esi, eax
mov eax, dword [esi]
mov dword [esp + 0x24], esi
mov dword [esp + 0x2c], eax
xor eax, eax
mov esi, dword [esp + 0x44]
cmp dword [esp + 0x54], esi
ja 0x4038a0
mov ecx, dword [esp + 0xc]
mov byte [esp + 0x69], 1
mov edx, ecx
and ecx, 7
shr edx, 3
mov dword [esp + 0xc], ecx
sub esi, edx
mov ebx, dword [esi]
mov dword [esp + 0x44], esi
mov dword [esp + 0x30], ebx
mov esi, dword [esp + 0x4c]
cmp dword [esp + 0x58], esi
ja 0x403890
mov edx, ebp
mov byte [esp + 0x6a], 1
and ebp, 7
shr edx, 3
sub esi, edx
mov ebx, dword [esi]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x34], ebx
mov esi, dword [esp + 0x1c]
cmp dword [esp + 0x5c], esi
ja 0x4036b0
mov esi, dword [esp + 8]
mov edx, esi
and esi, 7
shr edx, 3
sub dword [esp + 0x1c], edx
mov edx, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 8], esi
mov ebx, dword [edx]
sete dl
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x18]
cmp dword [esp + 0x64], ebx
seta al
and dl, al
mov byte [esp + 0x6b], dl
je 0x404675
mov eax, dword [esp + 0x2c]
mov ecx, edi
mov ebx, dword [esp + 0xc]
shl eax, cl
movzx ecx, byte [esp + 4]
shr eax, cl
mov ecx, dword [esp]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x50]
movzx edx, word [eax]
mov word [ecx], dx
movzx esi, byte [eax + 3]
movzx edx, byte [eax + 2]
mov eax, dword [esp + 0x30]
add esi, ecx
mov ecx, ebx
shl eax, cl
movzx ecx, byte [esp + 4]
add edi, edx
shr eax, cl
mov ecx, dword [esp]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x20]
movzx edx, word [eax]
mov word [ecx], dx
movzx edx, byte [eax + 2]
add edx, ebx
mov ebx, dword [esp]
mov dword [esp + 0xc], edx
movzx edx, byte [eax + 3]
mov eax, dword [esp + 0x34]
add edx, ecx
mov ecx, ebp
shl eax, cl
movzx ecx, byte [esp + 4]
shr eax, cl
lea ecx, [ebx + eax*4]
mov ebx, dword [esp + 0x28]
movzx eax, word [ecx]
mov word [ebx], ax
movzx eax, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add eax, ebp
mov ebp, dword [esp + 0x38]
add ecx, ebx
mov ebx, dword [esp]
mov dword [esp + 0x28], ecx
movzx ecx, byte [esp + 8]
shl ebp, cl
movzx ecx, byte [esp + 4]
shr ebp, cl
lea ecx, [ebx + ebp*4]
movzx ebp, word [ecx]
mov ebx, dword [esp + 0x18]
mov word [ebx], bp
movzx ebp, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add ebp, dword [esp + 8]
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x2c]
add ecx, ebx
mov ebx, dword [esp]
mov dword [esp + 0x18], ecx
mov ecx, edi
shl ebp, cl
movzx ecx, byte [esp + 4]
shr ebp, cl
lea ecx, [ebx + ebp*4]
movzx ebp, word [ecx]
mov word [esi], bp
movzx ebp, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add edi, ebp
mov ebp, dword [esp + 4]
lea ebx, [esi + ecx]
movzx ecx, byte [esp + 0xc]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x50], ebx
mov ebx, dword [esp]
shl esi, cl
mov ecx, ebp
shr esi, cl
lea ecx, [ebx + esi*4]
mov ebx, dword [esp + 0xc]
movzx esi, word [ecx]
mov word [edx], si
movzx esi, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add ebx, esi
mov esi, ebp
mov dword [esp + 0xc], ebx
lea ebx, [edx + ecx]
mov edx, dword [esp + 0x34]
mov ecx, eax
mov dword [esp + 0x20], ebx
mov ebx, dword [esp]
shl edx, cl
mov ecx, ebp
shr edx, cl
lea edx, [ebx + edx*4]
mov ebx, dword [esp + 0x28]
movzx ecx, word [edx]
mov word [ebx], cx
movzx ecx, byte [edx + 2]
lea ebp, [ecx + eax]
movzx eax, byte [edx + 3]
add eax, ebx
mov ebx, dword [esp + 8]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x38]
mov ecx, ebx
shl eax, cl
mov ecx, esi
mov esi, dword [esp]
shr eax, cl
lea eax, [esi + eax*4]
mov esi, dword [esp + 0x18]
movzx edx, word [eax]
mov word [esi], dx
movzx edx, byte [eax + 2]
movzx eax, byte [eax + 3]
add edx, ebx
add eax, esi
mov dword [esp + 8], edx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x18], eax
cmp dword [esp + 0x3c], esi
jbe 0x4033f0
mov eax, 3
jmp 0x40340b
movzx ebx, byte [ebx + 2]
shl ebx, 0x10
add ecx, ebx
mov ebx, dword [esp + 0x40]
movzx ebx, byte [ebx + 1]
shl ebx, 8
add ebx, ecx
mov dword [esp + 0x9c], ebx
jmp 0x4031f2
lea ebx, [edi + esi - 4]
mov ecx, dword [ebx]
mov dword [esp + 0x4c], ebx
mov dword [esp + 0xb8], ebx
mov dword [esp + 0xb0], ecx
test al, al
je 0x4031a0
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x70], ecx
mov eax, ecx
jmp 0x4032b1
mov eax, edi
mov esi, ebp
cmp byte [esp + 0x68], 0
mov dword [esp + 0x48], edi
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x70], ebp
mov edi, dword [esp]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xb4], esi
mov ebp, dword [esp + 0x50]
mov dword [esp + 0xc8], eax
je 0x403704
mov eax, dword [esp + 0x24]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x88], eax
cmp byte [esp + 0x69], 0
je 0x403721
mov eax, dword [esp + 0x44]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x9c], eax
cmp byte [esp + 0x6a], 0
je 0x40373e
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xb0], eax
cmp byte [esp + 0x6b], 0
je 0x40375b
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc4], eax
cmp dword [esp + 0x78], ebp
mov esi, dword [esp + 0x20]
setb dl
cmp dword [esp + 0x7c], esi
setb al
or al, dl
jne 0x40306f
mov ebx, dword [esp + 0x28]
cmp dword [esp + 0x80], ebx
jb 0x40306f
mov eax, dword [esp + 0x90]
cmp dword [esp + 0x48], 0x20
mov dword [esp + 0x24], eax
ja 0x404708
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x88]
mov ecx, dword [esp + 0x48]
neg edx
mov dword [esp], eax
xor eax, eax
and edx, 0x1f
mov dword [esp + 0x1c], ebx
mov dword [esp + 4], edx
jmp 0x40385c
cmp dword [esp + 0x14], edx
je 0x404568
mov ebx, ecx
mov esi, edx
shr ebx, 3
sub esi, ebx
cmp dword [esp + 0x14], esi
ja 0x404308
mov eax, dword [esp + 0x78]
mov edx, ecx
mov dword [esp], esi
sub eax, 3
cmp ebp, eax
setb al
shl ebx, 3
sub edx, ebx
mov ebx, dword [esi]
test al, al
je 0x40431e
mov ecx, edx
mov esi, ebx
shl esi, cl
movzx ecx, byte [esp + 4]
shr esi, cl
lea ecx, [edi + esi*4]
movzx esi, word [ecx]
mov word [ebp], si
movzx esi, byte [ecx + 2]
add esi, edx
movzx edx, byte [ecx + 3]
mov ecx, esi
add edx, ebp
mov ebp, ebx
shl ebp, cl
movzx ecx, byte [esp + 4]
shr ebp, cl
lea ebp, [edi + ebp*4]
movzx ecx, word [ebp]
mov word [edx], cx
movzx ecx, byte [ebp + 2]
movzx ebp, byte [ebp + 3]
add ecx, esi
add ebp, edx
cmp ecx, 0x20
ja 0x403920
mov edx, dword [esp]
cmp dword [esp + 0x3c], edx
ja 0x4037d0
mov eax, ecx
mov edx, ecx
shr eax, 3
sub dword [esp], eax
mov eax, dword [esp]
and edx, 7
mov ebx, dword [eax]
mov eax, dword [esp + 0x78]
sub eax, 3
cmp ebp, eax
setb al
jmp 0x403805
mov eax, 3
jmp 0x403461
mov eax, 3
jmp 0x40343a
movzx ecx, byte [eax]
mov dword [esp + 0xcc], eax
mov dword [esp + 0xc4], ecx
cmp edx, 2
je 0x4038d4
cmp edx, 3
jne 0x4038e8
movzx eax, byte [eax + 2]
shl eax, 0x10
add ecx, eax
mov eax, dword [esp + 0x6c]
movzx eax, byte [eax + 1]
shl eax, 8
add eax, ecx
mov dword [esp + 0xc4], eax
test bl, bl
je 0x40306f
movzx eax, bl
mov ecx, 5
bsr eax, eax
sub ecx, edx
shl ecx, 3
sub ecx, eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 8], ecx
mov dword [esp + 0xc8], ecx
mov dword [esp + 0x1c], eax
jmp 0x403326
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ebx
mov eax, dword [esp + 0x78]
sub eax, 2
mov dword [esp + 4], eax
cmp dword [esp + 4], ebp
jb 0x40398d
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x88]
mov edx, dword [esp + 0x8c]
neg ebx
and ebx, 0x1f
lea esi, [esi]
lea esi, [esi]
mov ecx, edx
mov eax, esi
shl eax, cl
mov ecx, ebx
shr eax, cl
lea eax, [edi + eax*4]
movzx ecx, word [eax]
mov word [ebp], cx
movzx ecx, byte [eax + 2]
movzx eax, byte [eax + 3]
add edx, ecx
add ebp, eax
cmp ebp, dword [esp + 4]
jbe 0x403960
mov dword [esp + 0x8c], edx
cmp dword [esp + 0x78], ebp
jbe 0x4039dc
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x88]
mov ecx, edx
shl eax, cl
mov ecx, dword [esp + 0x74]
neg ecx
shr eax, cl
lea eax, [edi + eax*4]
movzx ecx, byte [eax]
mov byte [ebp], cl
cmp byte [eax + 3], 1
je 0x404734
cmp edx, 0x1f
ja 0x4039dc
movzx eax, byte [eax + 2]
add edx, eax
mov eax, 0x20
cmp edx, eax
cmova edx, eax
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x24], eax
cmp edx, 0x20
ja 0x404719
mov ecx, dword [esp + 0x74]
mov ebx, dword [esp + 0x9c]
mov dword [esp + 4], eax
xor eax, eax
neg ecx
mov dword [esp + 0x2c], ebx
and ecx, 0x1f
mov dword [esp + 0x1c], ecx
jmp 0x403ab1
cmp dword [esp + 0x40], ecx
je 0x404498
mov ebx, edx
shr ebx, 3
sub ecx, ebx
cmp dword [esp + 0x40], ecx
ja 0x4041b8
mov eax, dword [esp + 0x7c]
mov dword [esp + 4], ecx
sub eax, 3
cmp dword [esp + 0x20], eax
setb al
shl ebx, 3
sub edx, ebx
mov ebx, dword [ecx]
test al, al
je 0x4041cf
mov ecx, edx
mov esi, ebx
mov ebp, dword [esp + 0x20]
shl esi, cl
movzx ecx, byte [esp + 0x1c]
shr esi, cl
lea ecx, [edi + esi*4]
movzx esi, word [ecx]
mov word [ebp], si
movzx esi, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add edx, esi
mov esi, ebx
add ebp, ecx
mov ecx, edx
shl esi, cl
movzx ecx, byte [esp + 0x1c]
shr esi, cl
lea ecx, [edi + esi*4]
movzx esi, word [ecx]
mov word [ebp], si
movzx esi, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add edx, esi
lea esi, [ebp + ecx]
mov dword [esp + 0x20], esi
cmp edx, 0x20
ja 0x403ae8
mov ecx, dword [esp + 4]
cmp dword [esp + 0x54], ecx
ja 0x403a20
mov eax, edx
and edx, 7
shr eax, 3
sub dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ebx, dword [eax]
mov eax, dword [esp + 0x7c]
sub eax, 3
cmp dword [esp + 0x20], eax
setb al
jmp 0x403a54
mov dword [esp + 0xa0], edx
mov dword [esp + 0x9c], ebx
mov eax, dword [esp + 0x7c]
lea ebp, [eax - 2]
mov eax, dword [esp + 0x20]
cmp ebp, eax
jb 0x403b59
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x9c]
mov edx, dword [esp + 0xa0]
neg ebx
and ebx, 0x1f
mov dword [esp + 0xc], ebx
mov ebx, esi
lea esi, [esi]
mov ecx, edx
mov esi, ebx
shl esi, cl
movzx ecx, byte [esp + 0xc]
shr esi, cl
lea ecx, [edi + esi*4]
movzx esi, word [ecx]
mov word [eax], si
movzx esi, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add edx, esi
add eax, ecx
cmp eax, ebp
jbe 0x403b28
mov dword [esp + 0x20], eax
mov dword [esp + 0xa0], edx
mov ebx, dword [esp + 0x20]
cmp dword [esp + 0x7c], ebx
jbe 0x403bab
mov edx, dword [esp + 0xa0]
mov eax, dword [esp + 0x9c]
mov ecx, edx
shl eax, cl
mov ecx, dword [esp + 0x74]
neg ecx
shr eax, cl
lea eax, [edi + eax*4]
movzx ecx, byte [eax]
mov byte [ebx], cl
cmp byte [eax + 3], 1
je 0x404722
cmp edx, 0x1f
ja 0x403bab
movzx eax, byte [eax + 2]
add edx, eax
mov eax, 0x20
cmp edx, eax
cmova edx, eax
mov dword [esp + 0xa0], edx
mov esi, dword [esp + 0xb8]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x24], esi
cmp eax, 0x20
ja 0x404710
mov ebx, dword [esp + 0x74]
mov edx, dword [esp + 0xb0]
xor ecx, ecx
neg ebx
mov dword [esp + 0x1c], edx
and ebx, 0x1f
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x28]
jmp 0x403c7b
cmp dword [esp + 0x60], esi
je 0x404460
mov edx, eax
mov ecx, esi
shr edx, 3
sub ecx, edx
cmp dword [esp + 0x60], ecx
ja 0x404198
mov esi, dword [esp + 0x80]
shl edx, 3
sub eax, edx
mov edx, dword [ecx]
lea ebp, [esi - 3]
cmp ebx, ebp
jae 0x404775
mov esi, ecx
mov ecx, eax
mov ebp, edx
shl ebp, cl
movzx ecx, byte [esp + 0xc]
shr ebp, cl
lea ecx, [edi + ebp*4]
movzx ebp, word [ecx]
mov word [ebx], bp
movzx ebp, byte [ecx + 2]
add eax, ebp
movzx ebp, byte [ecx + 3]
mov ecx, eax
add ebp, ebx
mov ebx, edx
shl ebx, cl
movzx ecx, byte [esp + 0xc]
shr ebx, cl
lea ecx, [edi + ebx*4]
movzx ebx, word [ecx]
mov word [ebp], bx
movzx ebx, byte [ecx + 2]
add eax, ebx
movzx ebx, byte [ecx + 3]
mov ecx, 1
add ebx, ebp
cmp eax, 0x20
ja 0x404170
cmp dword [esp + 0x58], esi
ja 0x403bf0
mov edx, eax
mov ecx, dword [esp + 0x80]
and eax, 7
shr edx, 3
sub esi, edx
sub ecx, 3
mov edx, dword [esi]
cmp ebx, ecx
jb 0x403c28
mov dword [esp + 0x28], ebx
mov dword [esp + 0xc], esi
mov ebx, dword [esp + 0xc]
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb0], edx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x80]
cmp dword [esp + 0x70], 0x20
lea ebp, [eax - 2]
ja 0x4045a3
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x24]
neg esi
mov dword [esp + 0xc], eax
xor eax, eax
and esi, 0x1f
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x70]
jmp 0x403d5c
mov ebx, ecx
cmp dword [esp + 0x60], ecx
je 0x4044d0
mov edx, esi
shr edx, 3
sub ebx, edx
cmp dword [esp + 0x60], ebx
ja 0x403d88
cmp dword [esp + 0x28], ebp
mov dword [esp + 0xc], ebx
setbe al
shl edx, 3
sub esi, edx
mov edx, dword [ebx]
test al, al
je 0x403d9f
mov ecx, esi
mov ebx, edx
shl ebx, cl
movzx ecx, byte [esp + 0x20]
shr ebx, cl
lea ecx, [edi + ebx*4]
movzx ebx, word [ecx]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x28]
mov word [ecx], bx
mov ecx, dword [esp + 0x1c]
movzx ebx, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add dword [esp + 0x28], ecx
add esi, ebx
cmp esi, 0x20
ja 0x403d9f
mov ecx, dword [esp + 0xc]
cmp dword [esp + 0x58], ecx
ja 0x403cf8
mov eax, esi
and esi, 7
shr eax, 3
sub dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
cmp dword [esp + 0x28], ebp
mov edx, dword [eax]
setbe al
jmp 0x403d23
mov ebx, dword [esp + 0xc]
mov eax, ebx
sub eax, dword [esp + 0x60]
sub ebx, eax
shl eax, 3
mov dword [esp + 0xc], ebx
mov edx, dword [ebx]
sub esi, eax
mov dword [esp + 0xb4], esi
mov dword [esp + 0xb0], edx
mov eax, dword [esp + 0x28]
cmp ebp, eax
jb 0x403e09
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
neg ebx
and ebx, 0x1f
mov dword [esp + 0x1c], ebx
mov ebx, esi
lea esi, [esi]
mov ecx, edx
mov esi, ebx
shl esi, cl
movzx ecx, byte [esp + 0x1c]
shr esi, cl
lea ecx, [edi + esi*4]
movzx esi, word [ecx]
mov word [eax], si
movzx esi, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add edx, esi
add eax, ecx
cmp eax, ebp
jbe 0x403dd8
mov dword [esp + 0x28], eax
mov dword [esp + 0xb4], edx
mov ebx, dword [esp + 0x28]
cmp dword [esp + 0x80], ebx
jbe 0x403e5e
mov edx, dword [esp + 0xb4]
mov eax, dword [esp + 0xb0]
mov ecx, edx
shl eax, cl
mov ecx, dword [esp + 0x74]
neg ecx
shr eax, cl
lea eax, [edi + eax*4]
movzx ecx, byte [eax]
mov byte [ebx], cl
cmp byte [eax + 3], 1
je 0x404758
cmp edx, 0x1f
ja 0x403e5e
movzx eax, byte [eax + 2]
add edx, eax
mov eax, 0x20
cmp edx, eax
cmova edx, eax
mov dword [esp + 0xb4], edx
mov ebp, dword [esp + 0xcc]
mov eax, dword [esp + 8]
mov dword [esp + 0x24], ebp
cmp eax, 0x20
ja 0x40415a
mov ebx, dword [esp + 0x74]
mov edx, dword [esp + 0xc4]
xor ecx, ecx
neg ebx
mov dword [esp + 0x20], edx
and ebx, 0x1f
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x18]
jmp 0x403f22
cmp dword [esp + 0x6c], ebp
je 0x404530
mov edx, eax
mov ecx, ebp
shr edx, 3
sub ecx, edx
cmp dword [esp + 0x6c], ecx
ja 0x404420
shl edx, 3
sub eax, edx
mov edx, dword [ecx]
cmp dword [esp + 0x64], ebx
jbe 0x40476a
mov ebp, ecx
mov ecx, eax
mov esi, edx
shl esi, cl
movzx ecx, byte [esp + 0x1c]
shr esi, cl
lea ecx, [edi + esi*4]
movzx esi, word [ecx]
mov word [ebx], si
movzx esi, byte [ecx + 2]
add eax, esi
movzx esi, byte [ecx + 3]
mov ecx, eax
add esi, ebx
mov ebx, edx
shl ebx, cl
movzx ecx, byte [esp + 0x1c]
shr ebx, cl
lea ecx, [edi + ebx*4]
movzx ebx, word [ecx]
mov word [esi], bx
movzx ebx, byte [ecx + 2]
add eax, ebx
movzx ebx, byte [ecx + 3]
mov ecx, 1
add ebx, esi
cmp eax, 0x20
ja 0x404148
cmp dword [esp + 0x5c], ebp
ja 0x403ea0
mov edx, eax
and eax, 7
shr edx, 3
sub ebp, edx
mov edx, dword [ebp]
cmp dword [esp + 0x64], ebx
ja 0x403ed0
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc4], edx
mov dword [esp + 0x24], ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x84]
sub eax, 2
cmp dword [esp + 8], 0x20
mov dword [esp + 0x1c], eax
ja 0x4044fc
mov ecx, dword [esp + 0x74]
mov ebp, dword [esp + 0x24]
xor eax, eax
mov ebx, dword [esp + 8]
neg ecx
and ecx, 0x1f
mov dword [esp + 0x20], ecx
jmp 0x403ffe
mov esi, dword [esp + 0x6c]
cmp esi, ebp
je 0x4044f0
mov edx, ebx
mov ecx, ebp
shr edx, 3
sub ecx, edx
cmp esi, ecx
ja 0x4042e0
mov esi, dword [esp + 0x1c]
cmp dword [esp + 0x18], esi
mov ebp, ecx
setbe al
shl edx, 3
sub ebx, edx
mov edx, dword [ecx]
test al, al
je 0x4042f0
mov ecx, ebx
mov esi, edx
shl esi, cl
movzx ecx, byte [esp + 0x20]
shr esi, cl
lea ecx, [edi + esi*4]
movzx esi, word [ecx]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x18]
mov word [ecx], si
mov ecx, dword [esp + 8]
movzx esi, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add dword [esp + 0x18], ecx
add ebx, esi
cmp ebx, 0x20
ja 0x404020
cmp ebp, dword [esp + 0x5c]
jb 0x403f90
mov eax, ebx
mov esi, dword [esp + 0x1c]
and ebx, 7
shr eax, 3
sub ebp, eax
cmp dword [esp + 0x18], esi
mov edx, dword [ebp]
setbe al
jmp 0x403fc1
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xc4], edx
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x1c], eax
jb 0x40408c
mov ebx, dword [esp + 0x74]
mov dword [esp + 8], ebp
mov esi, dword [esp + 0xc4]
mov edx, dword [esp + 0xc8]
neg ebx
and ebx, 0x1f
lea esi, [esi]
nop
mov ecx, edx
mov ebp, esi
shl ebp, cl
mov ecx, ebx
shr ebp, cl
lea ecx, [edi + ebp*4]
movzx ebp, word [ecx]
mov word [eax], bp
movzx ebp, byte [ecx + 2]
movzx ecx, byte [ecx + 3]
add edx, ebp
add eax, ecx
cmp eax, dword [esp + 0x1c]
jbe 0x404058
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 8]
mov dword [esp + 0xc8], edx
mov ebx, dword [esp + 0x18]
cmp dword [esp + 0x84], ebx
jbe 0x4040e1
mov edx, dword [esp + 0xc8]
mov eax, dword [esp + 0xc4]
mov ecx, edx
shl eax, cl
mov ecx, dword [esp + 0x74]
neg ecx
shr eax, cl
lea eax, [edi + eax*4]
movzx ecx, byte [eax]
mov byte [ebx], cl
cmp byte [eax + 3], 1
je 0x404746
cmp edx, 0x1f
ja 0x4040e1
movzx eax, byte [eax + 2]
add edx, eax
mov eax, 0x20
cmp edx, eax
cmova edx, eax
mov dword [esp + 0xc8], edx
mov esi, dword [esp]
xor eax, eax
cmp dword [esp + 0x14], esi
je 0x404663
mov esi, dword [esp + 4]
cmp dword [esp + 0x40], esi
je 0x404651
xor eax, eax
mov esi, dword [esp + 0xc]
cmp dword [esp + 0x60], esi
jne 0x40306f
cmp dword [esp + 0xb4], 0x20
jne 0x40306f
cmp dword [esp + 0x6c], ebp
jne 0x40306f
cmp dword [esp + 0xc8], 0x20
jne 0x40306f
test eax, eax
je 0x40306f
mov edx, dword [esp + 0x10]
jmp 0x403074
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc4], edx
mov eax, dword [esp + 0x84]
sub eax, 2
mov dword [esp + 0x1c], eax
jmp 0x40402e
mov dword [esp + 0x28], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb0], edx
mov eax, dword [esp + 0x80]
lea ebp, [eax - 2]
jmp 0x403dad
mov edx, esi
sub edx, dword [esp + 0x60]
mov dword [esp + 0x28], ebx
sub esi, edx
shl edx, 3
sub eax, edx
mov dword [esp + 0xc], esi
mov edx, dword [esi]
jmp 0x403ca7
mov ebx, dword [esp + 4]
mov eax, ebx
sub eax, dword [esp + 0x40]
sub ebx, eax
shl eax, 3
mov dword [esp + 4], ebx
mov ebx, dword [ebx]
sub edx, eax
mov eax, dword [esp + 4]
mov dword [esp + 0xa0], edx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x7c]
cmp dword [esp + 0xc], 0x20
lea ebp, [eax - 2]
ja 0x404596
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0xc]
neg edx
mov dword [esp + 4], eax
xor eax, eax
and edx, 0x1f
mov dword [esp + 0x1c], edx
jmp 0x404286
mov edx, ecx
cmp dword [esp + 0x40], ecx
je 0x404440
mov ebx, esi
shr ebx, 3
mov ecx, ebx
sub edx, ebx
cmp dword [esp + 0x40], edx
ja 0x4042b0
cmp dword [esp + 0x20], ebp
mov ebx, dword [edx]
mov dword [esp + 4], edx
setbe al
shl ecx, 3
sub esi, ecx
test al, al
je 0x4042c7
mov ecx, esi
mov edx, ebx
shl edx, cl
movzx ecx, byte [esp + 0x1c]
shr edx, cl
lea edx, [edi + edx*4]
movzx ecx, word [edx]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x20]
mov word [edx], cx
mov edx, dword [esp + 0xc]
movzx ecx, byte [edx + 2]
movzx edx, byte [edx + 3]
add dword [esp + 0x20], edx
add esi, ecx
cmp esi, 0x20
ja 0x4042c7
mov ecx, dword [esp + 4]
cmp dword [esp + 0x54], ecx
ja 0x404220
mov eax, esi
and esi, 7
shr eax, 3
sub dword [esp + 4], eax
mov eax, dword [esp + 4]
cmp dword [esp + 0x20], ebp
mov ebx, dword [eax]
setbe al
jmp 0x40424d
mov ebx, dword [esp + 4]
mov eax, ebx
sub eax, dword [esp + 0x40]
sub ebx, eax
shl eax, 3
mov dword [esp + 4], ebx
mov ebx, dword [ebx]
sub esi, eax
mov dword [esp + 0xa0], esi
mov dword [esp + 0x9c], ebx
jmp 0x403afd
mov eax, ebp
sub eax, dword [esp + 0x6c]
sub ebp, eax
shl eax, 3
mov edx, dword [ebp]
sub ebx, eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xc4], edx
jmp 0x40402e
mov ebx, edx
mov eax, edx
sub eax, dword [esp + 0x14]
mov edx, ecx
sub ebx, eax
shl eax, 3
mov dword [esp], ebx
mov ebx, dword [ebx]
sub edx, eax
mov eax, dword [esp]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x88], ebx
mov dword [esp + 0x48], edx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x78]
sub eax, 2
cmp dword [esp + 0x48], 0x20
mov dword [esp + 4], eax
ja 0x4045b0
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x48]
neg edx
mov dword [esp], eax
xor eax, eax
and edx, 0x1f
mov dword [esp + 0x1c], edx
jmp 0x4043c8
mov edx, ecx
cmp dword [esp + 0x14], ecx
je 0x404508
mov ebx, esi
shr ebx, 3
mov ecx, ebx
sub edx, ebx
cmp dword [esp + 0x14], edx
ja 0x4043f0
cmp ebp, dword [esp + 4]
mov ebx, dword [edx]
mov dword [esp], edx
setbe al
shl ecx, 3
sub esi, ecx
test al, al
je 0x404405
mov ecx, esi
mov edx, ebx
shl edx, cl
movzx ecx, byte [esp + 0x1c]
shr edx, cl
lea edx, [edi + edx*4]
movzx ecx, word [edx]
mov word [ebp], cx
movzx ecx, byte [edx + 2]
movzx edx, byte [edx + 3]
add esi, ecx
add ebp, edx
cmp esi, 0x20
ja 0x404405
mov ecx, dword [esp]
cmp dword [esp + 0x3c], ecx
ja 0x404370
mov eax, esi
and esi, 7
shr eax, 3
sub dword [esp], eax
mov eax, dword [esp]
cmp ebp, dword [esp + 4]
mov ebx, dword [eax]
setbe al
jmp 0x40439c
mov ebx, dword [esp]
mov eax, ebx
sub eax, dword [esp + 0x14]
sub ebx, eax
shl eax, 3
mov dword [esp], ebx
mov ebx, dword [ebx]
sub esi, eax
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], ebx
jmp 0x403939
mov edx, ebp
sub edx, dword [esp + 0x6c]
mov dword [esp + 0x18], ebx
sub ebp, edx
shl edx, 3
sub eax, edx
mov edx, dword [ebp]
jmp 0x403f43
mov dword [esp + 0xc], esi
test al, al
je 0x404596
mov dword [esp + 0xa0], esi
mov dword [esp + 0x9c], ebx
jmp 0x403afd
mov dword [esp + 0x28], ebx
test cl, cl
je 0x40462e
mov ebx, dword [esp + 0x60]
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb8], ebx
mov dword [esp + 0x70], eax
mov dword [esp + 0x24], ebx
jmp 0x403cc1
test al, al
je 0x404641
mov eax, dword [esp + 0x40]
mov dword [esp + 0xa0], edx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa4], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x24], eax
jmp 0x4041e9
mov dword [esp + 0x70], esi
test al, al
je 0x4045a3
mov dword [esp + 0xb4], esi
mov dword [esp + 0xb0], edx
jmp 0x403dad
mov dword [esp + 8], ebx
test al, al
jne 0x404020
mov ebp, dword [esp + 0x24]
jmp 0x40402e
mov dword [esp + 0x48], esi
test al, al
je 0x4045b0
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], ebx
jmp 0x403939
mov dword [esp + 0x18], ebx
test cl, cl
je 0x404617
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc4], edx
mov dword [esp + 0xcc], ebx
mov dword [esp + 8], eax
mov dword [esp + 0x24], ebx
jmp 0x403f59
test al, al
je 0x404603
mov eax, dword [esp + 0x14]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ebx
mov dword [esp + 0x90], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x48], ecx
jmp 0x404337
mov eax, dword [esp + 0x24]
mov dword [esp + 4], eax
jmp 0x403afd
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], eax
jmp 0x403dad
mov eax, dword [esp + 0x24]
mov dword [esp], eax
jmp 0x403939
mov eax, edx
cmp edx, ecx
seta dl
cmp ebp, eax
seta al
or al, dl
jne 0x40306f
cmp ecx, esi
ja 0x40306f
mov eax, dword [esp + 0x90]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x18], eax
jmp 0x40379c
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x1c]
sub eax, 2
mov dword [esp + 4], eax
jmp 0x40434d
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 0x20]
sub eax, 2
mov dword [esp + 0x1c], eax
jmp 0x403f72
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x1c]
lea ebp, [eax - 2]
jmp 0x403cd6
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x2c]
lea ebp, [eax - 2]
jmp 0x4041fb
xor edx, edx
cmp dword [esp + 0xa0], 0x20
cmovne eax, edx
jmp 0x404100
xor eax, eax
cmp dword [esp + 0x8c], 0x20
sete al
jmp 0x4040f0
mov eax, edi
mov ebx, ebp
cmp byte [esp + 0x68], 0
mov dword [esp + 0x48], edi
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x70], ebp
mov edi, dword [esp]
mov dword [esp + 0xa0], eax
mov ebp, dword [esp + 0x50]
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xc8], esi
je 0x4046c5
mov eax, dword [esp + 0x24]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x88], eax
cmp byte [esp + 0x69], 0
je 0x4046e2
mov eax, dword [esp + 0x44]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x9c], eax
cmp byte [esp + 0x6a], 0
je 0x403745
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xb0], eax
jmp 0x403745
mov dword [esp], eax
jmp 0x40392e
mov dword [esp + 0xc], esi
jmp 0x404186
mov dword [esp + 4], eax
jmp 0x403af6
movzx eax, byte [eax + 2]
add eax, edx
mov dword [esp + 0xa0], eax
jmp 0x403bab
movzx eax, byte [eax + 2]
add eax, edx
mov dword [esp + 0x8c], eax
jmp 0x4039dc
movzx eax, byte [eax + 2]
add eax, edx
mov dword [esp + 0xc8], eax
jmp 0x4040e1
movzx eax, byte [eax + 2]
add eax, edx
mov dword [esp + 0xb4], eax
jmp 0x403e5e
mov dword [esp + 0x18], ebx
mov ebp, ecx
jmp 0x403f43
mov dword [esp + 0x28], ebx
mov dword [esp + 0xc], ecx
jmp 0x403ca7