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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x12c
mov eax, dword [esp + 0x150]
mov dword [esp + 0xa8], eax
mov eax, dword [ecx + 0x40000]
mov esi, dword [ecx + 0x40004]
mov edi, dword [ecx + 0x40010]
mov dword [esp + 0x2c], esi
add edi, esi
mov dword [esp + 4], eax
mov esi, eax
sub esi, edi
mov edi, dword [esp + 0x14c]
mov eax, dword [esp + 0x148]
mov ebp, dword [esp + 0x144]
mov ebx, dword [esp + 0x140]
cmp esi, 0x10000
jb 0x513fd1
mov dword [ecx + 0x4001c], 0
push dword [esp + 0xa8]
push edi
push eax
push ebp
push ebx
call fcn.0050cd70
add esp, 0x140
jmp 0x51c056
mov dword [esp], edi
mov dword [esp + 0x120], ebx
mov dword [esp + 0xc4], edx
mov dword [esp + 0x18], ecx
test esi, esi
mov ecx, ebp
jne 0x5140e0
cmp dword [ecx], 0x1001
jl 0x5140e0
push 0x40020
mov esi, dword [esp + 0x1c]
push dword [esi + 0x4001c]
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x40000]
mov ecx, dword [esi + 0x40004]
mov edx, dword [esi + 0x4000c]
mov dword [esp + 8], edx
lea edi, [ecx + edx]
add edi, 4
cmp eax, edi
mov dword [esp + 4], eax
jb 0x514082
mov edi, eax
sub edi, ecx
add edi, 0xfffffffd
mov ebp, dword [esi + 0x40014]
cmp ebp, edi
jae 0x514082
nop dword [eax]
imul edx, dword [ecx + ebp], 0x9e3779b1
shr edx, 0x11
mov ebx, ebp
sub ebx, dword [esi + edx*4]
cmp ebx, 0xffff
mov eax, 0xffff
cmovae ebx, eax
movzx eax, bp
mov word [esi + eax*2 + 0x20000], bx
mov dword [esi + edx*4], ebp
add ebp, 1
cmp ebp, edi
jb 0x514050
mov eax, dword [esp + 8]
mov dword [esi + 0x40010], eax
mov edi, dword [esp + 4]
sub edi, ecx
mov dword [esi + 0x4000c], edi
mov dword [esi + 0x40008], ecx
mov edx, dword [esp + 0xc4]
mov eax, edx
sub eax, edi
mov dword [esi + 0x40004], eax
mov dword [esi + 0x40000], edx
mov dword [esi + 0x40014], edi
mov dword [esi + 0x4001c], 0
mov eax, dword [esp]
mov word [esi + 0x40018], ax
mov ecx, esi
add esp, 0x12c
pop esi
pop edi
pop ebx
pop ebp
jmp fcn.0050cd70
xor ebx, ebx
mov edi, eax
test eax, eax
mov eax, dword [esp + 0xa8]
jg 0x5140f8
cmp eax, 2
je 0x51c04e
mov ebp, dword [ecx]
cmp ebp, 0x7e000000
ja 0x51c04e
mov dword [esp + 0x11c], ecx
mov esi, dword [esp + 4]
add esi, ebp
mov ecx, dword [esp]
test ecx, ecx
mov eax, 9
cmovg eax, ecx
cmp eax, 0xc
mov ecx, 0xc
mov dword [esp + 0x108], eax
cmovb ecx, eax
mov edx, dword [esp + 0x18]
mov dword [edx + 0x40000], esi
lea esi, [ecx + ecx*2]
mov eax, dword [esi*4 + 0x687784]
mov dword [esp + 0x100], eax
cmp ecx, 9
ja 0x517f8e
xor eax, eax
cmp dword [esp + 0xa8], 2
setne al
mov esi, 0x1a00
shr esi, cl
mov dword [esp + 0x48], esi
mov ecx, dword [esp + 0x120]
add edi, ecx
mov esi, dword [esp + 0x11c]
mov dword [esi], 0
lea eax, [eax + eax*4]
add eax, edi
add eax, 0xfffffffb
mov dword [esp + 0xc8], eax
mov esi, dword [esp + 0xc4]
mov ebx, esi
mov dword [esp + 0x50], ecx
cmp ebp, 0xd
jb 0x51bf1a
lea eax, [esi + ebp]
add eax, 0xfffffff4
mov ebx, esi
mov dword [esp + 0x50], ecx
mov dword [esp + 0x118], eax
cmp eax, esi
jb 0x51bf1a
mov edi, edx
lea eax, [esi + ebp]
add eax, 0xfffffffb
lea edx, [eax - 3]
mov dword [esp + 0x10], edx
mov dword [esp + 0x58], eax
add eax, 0xffffffff
mov dword [esp + 0xf0], eax
mov dword [esp + 0xdc], ebp
lea eax, [ebp + esi - 5]
mov dword [esp + 0xec], eax
mov dword [esp + 0xd4], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x68], 0
xor edx, edx
mov dword [esp + 0x50], ecx
mov ebx, esi
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + 0x4001c]
mov dword [esp + 0x44], ecx
mov ebp, dword [edi + 0x4000c]
mov ecx, dword [edi + 0x40010]
mov esi, eax
not esi
add esi, ebx
mov dword [esp + 0xe8], esi
mov esi, 0xfffffffc
sub esi, ebx
mov dword [esp + 0x5c], esi
mov esi, ecx
sub esi, ebp
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], edx
mov edx, dword [edi + 0x40008]
lea esi, [eax + ebp]
mov dword [esp + 0xb8], esi
lea esi, [ecx + 0x10000]
mov dword [esp + 0x108], esi
lea esi, [ebp - 4]
mov dword [esp + 0x38], esi
lea esi, [edx + ecx]
mov dword [esp + 0xe0], esi
mov dword [esp + 0x2c], eax
lea eax, [eax + ebp + 4]
mov dword [esp + 0xf8], eax
lea eax, [edx + ebp]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xd0], ecx
lea eax, [edx + ecx + 4]
mov dword [esp + 0x90], eax
mov ecx, dword [edi + 0x40014]
lea eax, [ebp + ebx]
mov dword [esp + 0x9c], eax
lea eax, [ebx + 4]
mov dword [esp + 0x78], eax
mov dword [esp + 0x20], edx
lea eax, [edx + ebp - 1]
mov dword [esp + 0x60], eax
mov dword [esp + 0xb4], 0
mov dword [esp + 0x54], ebx
mov dword [esp + 0x40], ebp
nop word cs:[eax + eax]
nop dword [eax]
mov edx, ebx
mov eax, dword [esp + 0x2c]
sub edx, eax
lea esi, [edx - 0xffff]
cmp dword [esp + 0x108], edx
cmova esi, dword [esp + 0xd0]
mov dword [esp + 0x30], esi
mov dword [esp + 0x14], ebx
mov esi, dword [ebx]
mov dword [esp + 4], esi
cmp ecx, edx
mov dword [esp + 0x3c], edx
jae 0x514420
mov ebp, 0xffff
mov edx, dword [esp + 0xe8]
mov ebx, dword [esp + 0xb4]
add edx, ebx
mov esi, dword [esp + 0x54]
add ebx, esi
add eax, ecx
sub ebx, eax
mov eax, ecx
test bl, 1
je 0x514392
mov eax, dword [esp + 0x2c]
imul eax, dword [eax + ecx], 0x9e3779b1
shr eax, 0x11
mov esi, ecx
sub esi, dword [edi + eax*4]
cmp esi, 0xffff
cmovae esi, ebp
movzx edi, cx
mov ebx, dword [esp + 0x18]
mov word [ebx + edi*2 + 0x20000], si
mov edi, dword [esp + 0x18]
mov dword [edi + eax*4], ecx
lea eax, [ecx + 1]
cmp edx, ecx
mov ebp, dword [esp + 0x2c]
mov ebx, 0xffff
mov edx, dword [esp + 0x3c]
je 0x514420
add eax, 1
nop word [eax + eax]
lea ecx, [eax - 1]
imul edx, dword [ebp + eax - 1], 0x9e3779b1
shr edx, 0x11
mov esi, dword [edi + edx*4]
not esi
add esi, eax
cmp esi, 0xffff
cmovae esi, ebx
movzx edi, cx
mov ebx, dword [esp + 0x18]
mov word [ebx + edi*2 + 0x20000], si
mov ebx, 0xffff
mov edi, dword [esp + 0x18]
mov dword [edi + edx*4], ecx
imul ecx, dword [ebp + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [edi + ecx*4]
cmp edx, 0xffff
cmovae edx, ebx
movzx esi, ax
mov word [edi + esi*2 + 0x20000], dx
mov edx, dword [esp + 0x3c]
mov dword [edi + ecx*4], eax
lea ecx, [eax + 2]
add eax, 1
cmp eax, edx
mov eax, ecx
jb 0x5143b0
mov dword [edi + 0x40014], edx
mov esi, dword [esp + 0x14]
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov edi, dword [edi + eax*4]
lea eax, [esi + 4]
mov dword [esp + 0x34], eax
mov edx, dword [esp + 4]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
mov dword [esp + 0x7c], edx
xor eax, edx
or eax, ecx
lea eax, [esi + 8]
mov dword [esp + 0xac], eax
sete byte [esp + 0xbc]
mov edx, 3
mov ecx, dword [esp + 0x30]
cmp edi, ecx
jae 0x514630
mov eax, dword [esp + 0x100]
test eax, eax
jle 0x514f34
mov dword [esp + 8], eax
mov eax, dword [esp + 0x3c]
sub eax, ecx
cmp eax, 0xfffe
mov edi, dword [esp + 0x18]
ja 0x514f38
mov ebx, ecx
mov esi, dword [esp + 0x44]
mov ecx, dword [esi + 0x40000]
mov eax, dword [esi + 0x40004]
mov dword [esp], eax
sub ecx, eax
mov eax, dword [esp + 0x14]
imul eax, dword [eax], 0x9e3779b1
shr eax, 0x11
mov esi, dword [esi + eax*4]
add ebx, esi
mov dword [esp + 0x1c], ecx
sub ebx, ecx
mov eax, dword [esp + 0x3c]
sub eax, ebx
cmp eax, 0xffff
ja 0x514f38
mov ecx, ebx
jmp 0x51453d
bsf edx, eax
shr edx, 3
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
add edx, 4
add eax, ecx
mov ebx, dword [esp + 0xc]
cmp edx, ebx
mov ebp, dword [esp + 0x70]
cmovg ebp, eax
mov dword [esp + 0x70], ebp
cmovg ebx, edx
mov edx, ebx
movzx eax, si
mov ebx, dword [esp + 0x44]
movzx eax, word [ebx + eax*2 + 0x20000]
sub esi, eax
sub ecx, eax
mov eax, dword [esp + 0x3c]
sub eax, ecx
cmp eax, 0x10000
jae 0x514f38
mov eax, dword [esp + 8]
sub eax, 1
jb 0x514f38
mov dword [esp + 8], eax
mov eax, dword [esp + 4]
mov ebx, dword [esp]
cmp dword [ebx + esi], eax
jne 0x514519
mov edi, dword [esp + 0x1c]
sub edi, esi
add edi, dword [esp + 0x14]
mov eax, dword [esp + 0x58]
cmp edi, eax
cmova edi, eax
add ebx, esi
add ebx, 4
lea ebp, [edi - 3]
mov eax, dword [esp + 0x34]
cmp ebp, eax
mov dword [esp + 0xc], edx
jbe 0x51461d
mov eax, dword [eax]
xor eax, dword [ebx]
jne 0x5144f0
add ebx, 4
mov edx, dword [esp + 0xac]
mov dword [esp + 0x30], ecx
cmp edx, ebp
jae 0x5145c3
mov eax, dword [esp + 0x5c]
add eax, edx
nop word [eax + eax]
mov ecx, dword [edx]
xor ecx, dword [ebx]
jne 0x5145de
add edx, 4
add ebx, 4
add eax, 4
cmp edx, ebp
jb 0x5145b0
lea eax, [edi - 1]
cmp edx, eax
jae 0x5145f7
movzx eax, word [ebx]
cmp ax, word [edx]
mov ebp, dword [esp + 0x34]
jne 0x5145fb
add edx, 2
add ebx, 2
jmp 0x5145fb
bsf edx, ecx
shr edx, 3
add edx, eax
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
jmp 0x5144fe
mov ebp, dword [esp + 0x34]
cmp edx, edi
jae 0x51460a
mov al, byte [ebx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
sub edx, ebp
jmp 0x5144fe
mov edx, eax
mov dword [esp + 0x30], ecx
cmp edx, ebp
jb 0x5145a1
jmp 0x5145c3
mov ebx, edi
neg esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x6c], 0
mov edx, 3
mov eax, dword [esp + 0x100]
mov dword [esp], eax
mov dword [esp + 0x84], 0
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x40]
mov esi, ebx
nop word [eax + eax]
sub ebp, esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x4c], ebp
jbe 0x5146f0
cmp esi, dword [esp + 0x38]
ja 0x514930
mov eax, dword [esp + 0x20]
lea ebx, [eax + esi]
mov eax, dword [esp + 4]
cmp dword [ebx], eax
jne 0x514930
mov eax, dword [esp + 0x14]
add ebp, eax
mov eax, dword [esp + 0x58]
cmp ebp, eax
mov ecx, ebp
cmova ecx, eax
add ebx, 4
mov dword [esp + 8], ecx
add ecx, 0xfffffffd
mov eax, dword [esp + 0x34]
cmp ecx, eax
mov dword [esp + 0xc], edx
jbe 0x514ee4
mov eax, dword [eax]
xor eax, dword [ebx]
je 0x514744
bsf edx, eax
shr edx, 3
mov ecx, dword [esp + 0x30]
lea ebx, [edx + 4]
cmp ebp, dword [esp + 0x58]
jb 0x5147c2
jmp 0x514911
mov eax, dword [esp + 0x2c]
lea ebp, [eax + esi]
mov eax, dword [esp + 0x14]
movzx eax, word [eax + edx - 1]
cmp ax, word [edx + ebp - 1]
jne 0x514930
mov eax, dword [esp + 4]
cmp dword [ebp], eax
jne 0x514930
mov dword [esp + 0xc], edx
lea edx, [ebp + 4]
mov ebx, dword [esp + 0x34]
cmp edi, ebx
jbe 0x514807
mov eax, dword [ebx]
xor eax, dword [edx]
je 0x5147fd
bsf ebx, eax
shr ebx, 3
mov edx, dword [esp + 0xc]
jmp 0x5148fa
add ebx, 4
mov edx, dword [esp + 0xac]
cmp edx, ecx
jae 0x514773
mov eax, dword [esp + 0x5c]
lea esi, [eax + edx]
nop dword [eax]
mov eax, dword [edx]
xor eax, dword [ebx]
jne 0x5147a1
add edx, 4
add ebx, 4
add esi, 4
cmp edx, ecx
jb 0x514760
mov eax, dword [esp + 8]
add eax, 0xffffffff
cmp edx, eax
jae 0x514ea8
movzx eax, word [ebx]
cmp ax, word [edx]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x1c]
jne 0x514eb0
add edx, 2
add ebx, 2
jmp 0x514eb0
bsf edx, eax
shr edx, 3
add edx, esi
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x1c]
lea ebx, [edx + 4]
cmp ebp, dword [esp + 0x58]
jae 0x514911
mov eax, dword [esp + 0x14]
add eax, edx
add eax, 4
mov edx, dword [esp + 8]
cmp eax, edx
jne 0x514911
mov eax, edx
mov ecx, dword [esp + 0xb8]
mov ebp, ecx
cmp edi, edx
jbe 0x51487a
mov edx, eax
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x514870
bsf edx, eax
shr edx, 3
jmp 0x51490b
add edx, 4
mov ebx, dword [esp + 0xac]
cmp ebx, edi
jae 0x514837
mov eax, dword [esp + 0x5c]
lea ecx, [eax + ebx]
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [ebx]
xor eax, dword [edx]
jne 0x5148ea
add ebx, 4
add edx, 4
add ecx, 4
cmp ebx, edi
jb 0x514820
cmp ebx, dword [esp + 0xf0]
jae 0x51484e
movzx eax, word [edx]
cmp ax, word [ebx]
jne 0x51484e
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x58]
jae 0x51485f
mov al, byte [edx]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
sub ebx, dword [esp + 0x34]
jmp 0x5148fa
add edx, 4
mov ebp, dword [esp + 0xf8]
cmp edx, edi
jae 0x5148b4
mov eax, dword [esp + 0x9c]
sub eax, esi
mov ecx, dword [esp + 0xec]
cmp ecx, eax
cmovb eax, ecx
mov ecx, edx
sub ecx, eax
nop word [eax + eax]
mov eax, dword [edx]
xor eax, dword [ebp]
jne 0x514903
add edx, 4
add ebp, 4
add ecx, 4
cmp edx, edi
jb 0x5148a0
cmp edx, dword [esp + 0xf0]
jae 0x5148cc
movzx eax, word [ebp]
cmp ax, word [edx]
jne 0x5148cc
add edx, 2
add ebp, 2
cmp edx, dword [esp + 0x58]
jae 0x5148de
mov al, byte [ebp]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 8]
sub edx, eax
jmp 0x51490f
bsf ebx, eax
shr ebx, 3
add ebx, ecx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
add ebx, 4
cmp ebx, edx
jg 0x514920
jmp 0x514930
bsf edx, eax
shr edx, 3
add edx, ecx
mov ecx, dword [esp + 0x30]
add ebx, edx
mov edx, dword [esp + 0xc]
cmp ebx, edx
jle 0x514930
mov eax, dword [esp + 0x2c]
lea ebp, [eax + esi]
mov dword [esp + 0x70], ebp
mov edx, ebx
nop word cs:[eax + eax]
mov eax, dword [esp]
add eax, 0xffffffff
mov dword [esp + 8], eax
movzx eax, si
mov esi, dword [esp + 0x18]
movzx ebx, word [esi + eax*2 + 0x20000]
test byte [esp + 0x48], 1
je 0x514a60
cmp bx, 1
mov ebp, dword [esp + 0x40]
jne 0x514a64
mov eax, dword [esp + 0x6c]
test eax, eax
mov esi, dword [esp + 0x1c]
je 0x514a6d
mov edi, ecx
cmp eax, 2
jne 0x514b1c
mov ecx, ebp
mov dword [esp + 0xc], edx
lea edx, [esi - 1]
mov dword [esp + 0x28], edx
cmp edx, edi
jb 0x514ae0
mov dword [esp + 0x6c], 2
cmp dword [esp + 0x4c], 3
jb 0x514ae4
mov ebp, dword [esp + 0x28]
cmp ebp, ecx
mov edx, dword [esp + 0x2c]
cmovb edx, dword [esp + 0x20]
mov eax, dword [esp + 4]
cmp dword [edx + ebp], eax
jne 0x514ae4
mov eax, edx
mov edx, dword [esp + 0x28]
cmp edx, ecx
mov ebp, dword [esp + 0x58]
cmovb ebp, dword [esp + 0xd8]
mov esi, eax
mov dword [esp + 0xa4], eax
add eax, edx
mov dword [esp + 0x4c], eax
lea edx, [eax + 4]
lea esi, [ebp - 3]
mov edi, edx
cmp esi, edx
jbe 0x514a2a
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0xa4]
add eax, edi
add eax, 3
mov edi, edx
nop word cs:[eax + eax]
nop dword [eax]
mov ebx, edi
mov edi, dword [edi]
xor edi, dword [esp + 4]
jne 0x514b49
add ebx, 4
add eax, 4
cmp ebx, esi
mov edi, ebx
jb 0x514a10
cmp edi, ebp
mov esi, dword [esp + 0x1c]
jae 0x514b55
mov eax, ebp
sub eax, edi
mov ebx, dword [esp + 4]
cmp byte [edi], bl
jne 0x514b55
add edi, 1
shr ebx, 8
add eax, 0xffffffff
jne 0x514a3e
mov edi, ebp
jmp 0x514b55
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x1c]
jmp 0x514b26
mov dword [esp + 0x6c], 1
cmp byte [esp + 0xbc], 0
je 0x514b26
mov ebp, edx
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x34]
mov esi, eax
cmp edi, eax
jbe 0x514efc
nop word [eax + eax]
mov eax, dword [esi]
xor eax, dword [esp + 4]
jne 0x514aec
add esi, 4
add edx, 4
cmp esi, edi
jb 0x514aa0
mov eax, dword [esp + 0x58]
cmp esi, eax
jae 0x514f0e
sub eax, edx
lea edx, [esi + eax]
mov ecx, dword [esp + 4]
cmp byte [esi], cl
jne 0x514ad8
add esi, 1
shr ecx, 8
add eax, 0xffffffff
jne 0x514ac7
mov esi, edx
mov edx, esi
mov edi, dword [esp + 0x30]
jmp 0x514af6
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0xc]
mov ebp, ecx
jmp 0x514b20
mov edi, ecx
bsf eax, eax
shr eax, 3
add edx, eax
add edx, dword [esp + 0x94]
mov dword [esp + 0x84], edx
mov eax, 2
mov edx, ebp
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x1c]
cmp eax, 2
je 0x51497d
mov dword [esp + 0x6c], eax
mov ecx, edi
mov edi, dword [esp + 0x10]
movzx eax, bx
sub esi, eax
cmp esi, ecx
mov eax, dword [esp + 8]
jb 0x514483
cmp dword [esp], 1
mov dword [esp], eax
jg 0x514670
jmp 0x514483
bsf edi, edi
shr edi, 3
add edi, eax
mov esi, dword [esp + 0x1c]
sub edi, edx
add edi, 4
cmp dword [esp + 0x28], ecx
jae 0x514b87
mov ecx, dword [esp + 0x4c]
lea eax, [ecx + edi]
cmp eax, ebp
je 0x514ba3
mov dword [esp + 0xa0], edi
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x8c], eax
mov edx, eax
jmp 0x514c34
mov dword [esp + 0xa0], edi
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x8c], eax
mov edx, eax
jmp 0x514c30
mov ebp, edi
lea ecx, [edi*8]
mov edx, dword [esp + 4]
rol edx, cl
mov eax, dword [esp + 0xb8]
mov esi, eax
mov ecx, eax
cmp dword [esp + 0x10], eax
mov edi, dword [esp + 0x58]
jbe 0x514f1e
nop dword [eax + eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x514c02
add ecx, 4
add esi, 4
cmp ecx, dword [esp + 0x10]
jb 0x514bd0
cmp ecx, edi
jae 0x514c0a
mov eax, edi
sub eax, esi
lea esi, [ecx + eax]
cmp byte [ecx], dl
jne 0x514bfe
add ecx, 1
shr edx, 8
add eax, 0xffffffff
jne 0x514bed
mov ecx, esi
mov esi, ecx
jmp 0x514c0a
bsf eax, eax
shr eax, 3
add esi, eax
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xe0]
sub ebp, eax
add ebp, esi
mov dword [esp + 0xa0], ebp
mov dword [esp + 0x8c], ecx
mov edx, ecx
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 4]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x24], edx
lea eax, [edx + 4]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xa4]
lea ebp, [eax + esi]
xor edi, edi
mov esi, ecx
nop dword [eax + eax]
mov ebx, edi
mov edx, esi
lea eax, [ecx + edi]
cmp eax, dword [esp + 0x6c]
jb 0x514c81
lea edi, [ebx - 4]
lea esi, [edx - 4]
mov ecx, dword [esp + 4]
cmp dword [ebp + ebx - 5], ecx
mov ecx, dword [esp + 0x4c]
je 0x514c60
mov edi, ebp
lea esi, [ebx + ebp]
add esi, 0xffffffff
cmp eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x40]
jbe 0x514cdc
mov ecx, dword [esp + 0x7c]
cmp byte [ebx + edi - 2], cl
jne 0x514cdc
mov ecx, dword [esp + 0x8c]
sub ecx, dword [esp + 0x1c]
sub ecx, dword [esp + 0xa4]
sub ecx, ebx
add eax, ecx
add eax, 1
lea ecx, [esp + 0xb2]
nop dword [eax]
lea esi, [edx - 1]
cmp esi, dword [esp + 0x24]
jbe 0x514edd
movzx ebx, byte [edx - 2]
lea edi, [ecx - 1]
mov edx, esi
cmp bl, byte [ecx]
mov ecx, edi
je 0x514cc0
mov eax, dword [esp + 0x4c]
mov edx, eax
sub edx, esi
mov ebx, dword [esp + 0x28]
cmp ebx, ebp
jae 0x514cf9
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
jmp 0x514dea
sub eax, edx
cmp eax, dword [esp + 0xb8]
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
jne 0x514dea
cmp dword [esp + 0xd0], ebp
jae 0x514dea
mov dword [esp + 0x6c], edx
mov ecx, edx
neg ecx
shl ecx, 3
mov eax, dword [esp + 4]
rol eax, cl
mov dword [esp + 0xb0], eax
mov dword [esp + 0x4c], eax
shr eax, 0x18
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x74]
mov esi, dword [esp + 0xd8]
mov edi, dword [esp + 0x60]
nop
mov ecx, edi
mov eax, esi
mov ebx, edx
lea edx, [edi + 1]
mov dword [esp + 0x1c], edx
cmp edx, dword [esp + 0x90]
jb 0x514d78
lea edi, [ecx - 4]
lea esi, [eax - 4]
lea edx, [ebx + 4]
mov ebp, dword [esp + 0x4c]
cmp dword [ecx - 3], ebp
je 0x514d50
mov edx, dword [esp + 0x1c]
cmp edx, dword [esp + 0xe0]
jbe 0x514f15
mov edx, dword [esp + 0x24]
cmp byte [ecx], dl
mov edi, dword [esp + 0x10]
jne 0x514dd1
add dword [esp + 0x1c], ebx
lea edx, [esp + 0xb2]
mov ebx, dword [esp + 0xe0]
nop word [eax + eax]
cmp ecx, ebx
jbe 0x514ef3
movzx eax, byte [ecx - 1]
add ecx, 0xffffffff
lea esi, [edx - 1]
cmp al, byte [edx]
mov edx, esi
mov edi, dword [esp + 0x10]
je 0x514db0
add ecx, 1
mov eax, ecx
mov edx, dword [esp + 0x6c]
add edx, dword [esp + 0xd8]
sub edx, eax
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x40]
mov esi, ebx
sub esi, edx
cmp esi, eax
cmovbe esi, eax
mov ecx, ebx
sub ecx, esi
mov edx, dword [esp + 0xa0]
add ecx, edx
mov eax, dword [esp + 0x84]
cmp edx, eax
ja 0x514e30
cmp ecx, eax
jb 0x514e30
sub ebx, eax
mov esi, dword [esp + 0xa0]
add esi, ebx
mov eax, esi
not eax
add eax, ebp
cmp eax, 3
cmovb esi, ebp
mov dword [esp + 0x6c], 2
jmp 0x514e45
mov eax, esi
not eax
add eax, ebp
mov dword [esp + 0x6c], 2
cmp eax, 3
jae 0x514e52
mov esi, ebp
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0xc]
jmp 0x514b2b
mov eax, dword [esp + 0x84]
cmp ecx, eax
cmovae ecx, eax
mov edx, dword [esp + 0xc]
cmp edx, ecx
jae 0x514e84
mov eax, dword [esp + 0x3c]
sub eax, esi
cmp eax, 0xffff
ja 0x514f74
mov eax, dword [esp + 0x2c]
lea edx, [eax + esi]
mov dword [esp + 0x70], edx
mov edx, ecx
mov ecx, dword [esp + 0x30]
movzx eax, si
mov ebx, esi
mov esi, dword [esp + 0x18]
movzx eax, word [esi + eax*2 + 0x20000]
mov esi, ebx
sub esi, eax
jae 0x514b2b
jmp 0x514f78
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 8]
cmp edx, eax
jae 0x514ec3
mov al, byte [ebx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov ecx, dword [esp + 0x30]
sub edx, dword [esp + 0x34]
lea ebx, [edx + 4]
cmp ebp, dword [esp + 0x58]
jb 0x5147c2
jmp 0x514911
mov esi, eax
jmp 0x514cdc
mov edx, eax
cmp edx, ecx
jb 0x514752
jmp 0x514773
mov eax, dword [esp + 0x1c]
jmp 0x514dd1
mov esi, dword [esp + 0x34]
mov edx, esi
mov eax, dword [esp + 0x58]
cmp esi, eax
jb 0x514abe
mov edi, ecx
jmp 0x514af6
mov edi, dword [esp + 0x10]
jmp 0x514dd1
mov ecx, dword [esp + 0xb8]
mov esi, ecx
cmp ecx, edi
jb 0x514be6
jmp 0x514c0a
mov edi, dword [esp + 0x18]
cmp edx, 4
jge 0x514f81
mov ebx, dword [esp + 0x14]
add ebx, 1
add dword [esp + 0xb4], 1
add dword [esp + 0x5c], 0xffffffff
add dword [esp + 0x9c], 1
add dword [esp + 0x78], 1
mov ecx, dword [esp + 0x3c]
cmp ebx, dword [esp + 0x118]
jbe 0x514300
jmp 0x51bf08
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 8]
jmp 0x514483
mov eax, dword [esp + 0x54]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x88], eax
mov ebp, dword [esp + 0x70]
mov dword [esp + 0xfc], ebp
mov esi, dword [esp + 0x14]
mov dword [esp + 0xe4], esi
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x14], eax
nop dword [eax]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x38], esi
lea ecx, [esi + edx]
cmp ecx, dword [esp + 0x118]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x74], ebp
ja 0x51775d
lea eax, [ecx - 2]
mov ebp, dword [edi + 0x40004]
mov dword [esp + 0x20], eax
mov edx, eax
sub edx, ebp
mov ebx, dword [edi + 0x40010]
lea eax, [ebx + 0x10000]
lea esi, [edx - 0xffff]
cmp eax, edx
mov dword [esp + 0xe0], ebx
cmova esi, ebx
mov dword [esp + 0x6c], esi
mov eax, dword [ecx - 2]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x40014]
cmp eax, edx
mov ebx, 0xffff
mov dword [esp + 0x24], edx
jae 0x515062
nop dword [eax]
imul ecx, dword [ebp + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [edi + ecx*4]
cmp edx, 0xffff
cmovae edx, ebx
movzx esi, ax
mov word [edi + esi*2 + 0x20000], dx
mov edx, dword [esp + 0x24]
mov dword [edi + ecx*4], eax
add eax, 1
cmp eax, edx
jb 0x515030
mov eax, dword [edi + 0x4000c]
mov dword [esp + 0x30], eax
mov esi, dword [esp + 0x20]
mov eax, esi
mov ecx, dword [esp + 0x38]
sub eax, ecx
mov dword [esp + 0x90], eax
mov eax, dword [edi + 0x4001c]
mov dword [esp + 0xa4], eax
mov eax, dword [edi + 0x40008]
mov dword [esp + 0x70], eax
mov dword [edi + 0x40014], edx
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov dword [esp], eax
mov ebx, dword [esp + 4]
movzx eax, bx
mov edx, ebx
shr edx, 0x10
xor edx, eax
sub ecx, esi
mov dword [esp + 0x78], ecx
mov eax, ebx
shr eax, 0x18
movzx ecx, bl
mov dword [esp + 0x108], eax
xor ecx, eax
or ecx, edx
mov ebx, esi
mov esi, dword [esp + 0x90]
mov edx, edi
mov eax, dword [esp]
mov ecx, dword [edi + eax*4]
sete byte [esp + 0x9c]
lea eax, [ebx + 4]
mov dword [esp + 0x44], eax
lea eax, [ebx + 8]
mov dword [esp + 0x94], eax
cmp ecx, dword [esp + 0x6c]
mov dword [esp + 0x34], ebp
jae 0x515113
mov ebx, dword [esp + 0x100]
mov esi, dword [esp + 0x7c]
jmp 0x515cb3
mov eax, ecx
mov edi, dword [esp + 0x30]
lea ecx, [edi + ebp]
mov dword [esp + 0xa0], ecx
mov dword [esp], eax
mov eax, esi
neg eax
mov dword [esp + 0x5c], eax
lea eax, [edi - 4]
mov dword [esp + 0xac], eax
neg ebx
mov dword [esp + 0xf8], ebx
mov ebx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x38]
mov esi, 0xfffffffe
sub esi, ecx
sub esi, ebx
mov dword [esp + 0xd0], esi
lea eax, [ebx + edi]
add eax, ecx
add eax, 0xfffffffe
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xe0]
mov esi, eax
sub esi, edi
mov dword [esp + 0xc0], esi
mov ebx, dword [esp + 0x70]
lea esi, [ebx + eax]
mov dword [esp + 0xb8], esi
mov ecx, dword [esp + 0xa0]
add ecx, 4
mov dword [esp + 0x104], ecx
lea ecx, [ebx + edi]
mov dword [esp + 0x50], ecx
lea eax, [ebx + eax + 4]
mov dword [esp + 0xbc], eax
mov edi, ebp
lea eax, [ebp - 1]
mov dword [esp + 0xe8], eax
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x38]
lea eax, [esi + eax - 3]
mov dword [esp + 0x3c], eax
lea eax, [ebx - 1]
mov dword [esp + 0xb4], eax
mov ecx, dword [esp + 0x30]
lea eax, [ebx + ecx - 1]
mov dword [esp + 0x114], eax
mov dword [esp + 0x2c], 0
mov eax, dword [esp + 0x100]
mov dword [esp + 8], eax
mov eax, dword [esp]
xor ebp, ebp
nop word cs:[eax + eax]
nop
sub ecx, eax
mov ebx, ebp
mov dword [esp + 0x1c], ebp
mov dword [esp], eax
mov dword [esp + 0x40], ecx
jbe 0x515290
cmp eax, dword [esp + 0xac]
ja 0x515360
mov edi, dword [esp + 0x70]
lea ebp, [edi + eax]
mov eax, dword [esp + 4]
cmp dword [ebp], eax
jne 0x515360
mov eax, dword [esp + 0x20]
mov edx, ebp
lea ebp, [eax + ecx]
mov edi, dword [esp + 0x58]
cmp ebp, edi
mov eax, ebp
cmova eax, edi
mov dword [esp + 0x84], edx
lea ecx, [edx + 4]
mov dword [esp + 0x28], eax
lea ebx, [eax - 3]
mov eax, dword [esp + 0x44]
cmp ebx, eax
mov dword [esp + 0xc], esi
jbe 0x515c42
mov eax, dword [eax]
xor eax, dword [ecx]
mov esi, dword [esp + 0x10]
je 0x515369
bsf edx, eax
shr edx, 3
mov ebx, dword [esp + 0x1c]
lea ecx, [edx + 4]
cmp ebp, edi
jb 0x5153ec
jmp 0x5155c9
lea ebp, [edi + eax]
mov eax, dword [esp + 0x38]
mov edi, esi
movzx eax, word [eax + esi - 1]
mov ecx, dword [esp + 0x5c]
add ecx, ebp
cmp ax, word [esi + ecx - 1]
jne 0x515360
mov eax, dword [esp + 4]
cmp dword [ebp], eax
mov edi, edx
jne 0x515362
mov dword [esp + 0xc], esi
cmp dword [esp + 0x90], 0
je 0x51544a
mov eax, dword [esp + 0xa0]
sub eax, ebp
mov ecx, dword [esp + 0x78]
cmp ecx, eax
cmovg eax, ecx
xor ecx, ecx
test eax, eax
mov esi, 0
cmovs esi, eax
mov edx, dword [esp + 0xe8]
mov edi, dword [esp]
add edx, edi
nop word [eax + eax]
cmp ecx, eax
jle 0x51531f
lea edi, [ecx - 1]
mov ebx, dword [esp + 0x3c]
movzx ebx, byte [ebx + ecx]
cmp bl, byte [edx + ecx]
mov ebx, dword [esp + 0x1c]
mov ecx, edi
je 0x515300
add edi, 1
mov esi, edi
mov edi, dword [esp + 0x18]
lea edx, [ebp + 4]
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x10], eax
jbe 0x51545d
mov eax, dword [eax]
xor eax, dword [edx]
je 0x515461
bsf ecx, eax
shr ecx, 3
mov edx, dword [esp + 0xc]
sub ecx, esi
add ecx, 4
cmp ecx, edx
jg 0x51556f
jmp 0x515660
mov edi, edx
mov edx, esi
jmp 0x515660
add ecx, 4
mov edx, dword [esp + 0x94]
cmp edx, ebx
jae 0x5153a3
mov eax, dword [esp + 0xd0]
lea esi, [eax + edx]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x5153d1
add edx, 4
add ecx, 4
add esi, 4
cmp edx, ebx
jb 0x515390
mov eax, dword [esp + 0x28]
add eax, 0xffffffff
cmp edx, eax
jae 0x51559f
movzx eax, word [ecx]
cmp ax, word [edx]
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
jne 0x5155a7
add edx, 2
add ecx, 2
jmp 0x5155a7
bsf edx, eax
shr edx, 3
add edx, esi
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
lea ecx, [edx + 4]
cmp ebp, edi
jae 0x5155c9
mov eax, dword [esp + 0x20]
add eax, edx
add eax, 4
mov edx, dword [esp + 0x28]
cmp eax, edx
jne 0x5155c9
mov eax, edx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xa0]
mov ebp, ecx
cmp esi, edx
jbe 0x5154cb
mov edx, eax
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x5154c1
bsf edx, eax
shr edx, 3
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0x4c]
add ecx, edx
test eax, eax
jne 0x5155dc
xor esi, esi
jmp 0x515630
xor esi, esi
lea edx, [ebp + 4]
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x10], eax
ja 0x515334
mov ecx, eax
jmp 0x51546b
add edx, 4
mov ecx, dword [esp + 0x94]
cmp ecx, dword [esp + 0x10]
jae 0x515499
mov eax, dword [esp + 0xd0]
lea ebx, [eax + ecx]
nop dword [eax + eax]
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x515552
add ecx, 4
add edx, 4
add ebx, 4
cmp ecx, dword [esp + 0x10]
jb 0x515480
cmp ecx, dword [esp + 0xf0]
jae 0x515c13
movzx eax, word [edx]
cmp ax, word [ecx]
mov ebx, dword [esp + 0x1c]
jne 0x515c17
add ecx, 2
add edx, 2
jmp 0x515c17
add edx, 4
mov ebp, dword [esp + 0x104]
cmp edx, esi
jae 0x515c62
mov eax, dword [esp + 0x60]
sub eax, dword [esp]
mov ecx, dword [esp + 0xec]
cmp eax, ecx
cmovae eax, ecx
mov ebx, edx
sub ebx, eax
mov ecx, dword [esp + 0x4c]
nop
mov eax, dword [edx]
xor eax, dword [ebp]
jne 0x51557d
add edx, 4
add ebp, 4
add ebx, 4
cmp edx, esi
jb 0x5154f0
cmp edx, dword [esp + 0xf0]
jae 0x515520
movzx eax, word [ebp]
cmp ax, word [edx]
jne 0x515520
add edx, 2
add ebp, 2
cmp edx, edi
jae 0x515530
mov al, byte [ebp]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x1c]
sub edx, dword [esp + 0x28]
add ecx, edx
test eax, eax
jne 0x5155dc
jmp 0x515443
bsf ecx, eax
shr ecx, 3
add ecx, ebx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x1c]
sub ecx, esi
add ecx, 4
cmp ecx, edx
jle 0x515660
add ebp, esi
mov dword [esp + 0x80], ebp
jmp 0x515654
bsf edx, eax
shr edx, 3
add edx, ebx
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x1c]
add ecx, edx
test eax, eax
jne 0x5155dc
jmp 0x515443
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
cmp edx, eax
jae 0x5155ba
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
sub edx, dword [esp + 0x44]
lea ecx, [edx + 4]
cmp ebp, edi
jb 0x5153ec
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x3c]
test eax, eax
je 0x515443
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0xb8]
sub eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x78]
cmp ecx, eax
cmovg eax, ecx
xor edx, edx
test eax, eax
mov esi, 0
cmovs esi, eax
mov ecx, dword [esp + 0xb4]
mov edi, dword [esp]
lea ebx, [ecx + edi]
cmp edx, eax
jle 0x515628
lea edi, [edx - 1]
movzx ecx, byte [ebp + edx]
cmp cl, byte [ebx + edx]
mov edx, edi
je 0x515610
add edi, 1
mov esi, edi
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
sub ecx, esi
mov edx, dword [esp + 0xc]
cmp ecx, edx
mov edi, dword [esp + 0x18]
jle 0x515660
mov eax, dword [esp + 0x34]
mov edx, ecx
mov ecx, dword [esp]
add eax, ecx
mov ecx, edx
add eax, esi
mov dword [esp + 0x80], eax
add esi, dword [esp + 0x20]
mov dword [esp + 0x14], esi
mov edx, ecx
nop
mov eax, dword [esp + 8]
add eax, 0xffffffff
mov dword [esp + 0x4c], eax
movzx eax, word [esp]
movzx ecx, word [edi + eax*2 + 0x20000]
test byte [esp + 0x48], 1
je 0x515790
cmp cx, 1
mov esi, dword [esp + 0x10]
jne 0x515790
cmp dword [esp + 0x2c], 0
je 0x515799
mov ebp, dword [esp + 0x34]
mov eax, dword [esp]
cmp dword [esp + 0x2c], 2
jne 0x515830
lea edi, [eax - 1]
cmp edi, dword [esp + 0x6c]
jb 0x515830
mov dword [esp + 0x2c], 2
cmp dword [esp + 0x40], 3
jb 0x515830
cmp edi, dword [esp + 0x30]
mov dword [esp + 0x84], edi
mov edi, ebp
cmovb edi, dword [esp + 0x70]
mov eax, dword [esp + 4]
mov esi, dword [esp + 0x84]
cmp dword [edi + esi], eax
jne 0x515830
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x84]
cmp edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x58]
cmovb ecx, dword [esp + 0x50]
mov eax, edi
mov dword [esp + 0x68], edi
lea ebp, [edi + edx]
lea edx, [ebp + 4]
mov dword [esp + 0x40], ecx
lea esi, [ecx - 3]
mov ecx, edx
cmp esi, edx
jbe 0x515756
mov eax, dword [esp]
mov ecx, dword [esp + 0x68]
add eax, ecx
add eax, 3
mov ecx, edx
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [ecx]
xor edi, dword [esp + 4]
jne 0x51586c
add ecx, 4
add eax, 4
cmp ecx, esi
jb 0x515740
cmp ecx, dword [esp + 0x40]
mov esi, ecx
mov edi, dword [esp + 0xa0]
jae 0x51587b
mov ecx, dword [esp + 0x40]
sub ecx, esi
mov eax, dword [esp + 4]
cmp byte [esi], al
jne 0x51587b
add esi, 1
shr eax, 8
add ecx, 0xffffffff
jne 0x515773
mov esi, dword [esp + 0x40]
jmp 0x51587b
mov ebp, dword [esp + 0x34]
jmp 0x515834
mov dword [esp + 0x2c], 1
cmp byte [esp + 0x9c], 0
mov ebp, dword [esp + 0x34]
je 0x515834
mov ebp, edx
mov edx, dword [esp + 0x44]
mov ebx, edx
cmp esi, edx
jbe 0x5157d2
nop
mov eax, dword [edx]
xor eax, dword [esp + 4]
jne 0x5157f8
add edx, 4
add ebx, 4
cmp edx, esi
jb 0x5157c0
mov eax, dword [esp + 0x58]
cmp edx, eax
jae 0x515800
sub eax, ebx
lea esi, [edx + eax]
mov ebx, dword [esp + 4]
cmp byte [edx], bl
jne 0x5157f4
add edx, 1
shr ebx, 8
add eax, 0xffffffff
jne 0x5157e3
mov edx, esi
mov ebx, edx
jmp 0x515800
bsf eax, eax
shr eax, 3
add ebx, eax
mov eax, dword [esp]
add ebx, dword [esp + 0xf8]
mov dword [esp + 0x2c], 2
mov edx, ebp
mov ebp, dword [esp + 0x34]
cmp dword [esp + 0x2c], 2
je 0x5156ad
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [esp + 0x18]
mov esi, edx
movzx eax, cx
mov ecx, dword [esp]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x30]
mov edx, edi
cmp eax, dword [esp + 0x6c]
jb 0x515caf
mov edi, ebp
mov ebp, ebx
cmp dword [esp + 8], 1
mov ebx, dword [esp + 0x4c]
mov dword [esp + 8], ebx
jg 0x515200
jmp 0x515cb3
bsf esi, edi
shr esi, 3
add esi, eax
mov edi, dword [esp + 0xa0]
sub esi, edx
add esi, 4
mov eax, dword [esp + 0x84]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0xd8], esi
mov dword [esp + 0x2c], ebp
jae 0x5158ba
lea eax, [esi + ebp]
cmp eax, dword [esp + 0x40]
je 0x5158c6
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xf4], eax
mov edi, eax
jmp 0x515950
mov dword [esp + 0xf4], edi
jmp 0x515950
lea ecx, [esi*8]
mov edx, dword [esp + 4]
rol edx, cl
cmp dword [esp + 0x10], edi
jbe 0x515c90
mov ebp, edi
mov ecx, edi
mov esi, dword [esp + 0x58]
nop word cs:[eax + eax]
nop
mov eax, dword [ecx]
xor eax, edx
jne 0x515922
add ecx, 4
add ebp, 4
cmp ecx, dword [esp + 0x10]
jb 0x5158f0
cmp ecx, esi
jae 0x51592a
mov eax, esi
sub eax, ebp
lea esi, [ecx + eax]
cmp byte [ecx], dl
jne 0x51591e
add ecx, 1
shr edx, 8
add eax, 0xffffffff
jne 0x51590d
mov ecx, esi
mov ebp, ecx
jmp 0x51592a
bsf eax, eax
shr eax, 3
add ebp, eax
mov eax, dword [esp + 0xd8]
sub eax, edi
add eax, ebp
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xf4], eax
mov edi, eax
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 4]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x28], edi
lea eax, [edi + 4]
mov dword [esp + 0x40], eax
mov eax, dword [esp]
mov ecx, dword [esp + 0x68]
lea ebx, [ecx + eax]
xor edi, edi
nop word cs:[eax + eax]
nop dword [eax]
mov esi, edi
mov edx, ebp
mov eax, dword [esp + 0x2c]
add eax, edi
cmp eax, dword [esp + 0x40]
jb 0x5159a0
lea edi, [esi - 4]
lea ebp, [edx - 4]
mov ecx, dword [esp + 4]
cmp dword [ebx + esi - 5], ecx
je 0x515980
lea edi, [esi + ebx]
add edi, 0xffffffff
cmp eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x84]
jbe 0x515c59
mov ecx, dword [esp + 0x108]
cmp byte [esi + ebx - 2], cl
mov ebx, dword [esp + 0x1c]
jne 0x515a10
mov ecx, dword [esp + 0xf4]
sub ecx, dword [esp]
sub ecx, dword [esp + 0x68]
sub ecx, esi
add eax, ecx
add eax, 1
mov dword [esp], eax
lea ecx, [esp + 0xb2]
nop word [eax + eax]
lea edi, [edx - 1]
cmp edi, dword [esp + 0x28]
jbe 0x515c0b
mov eax, ebx
movzx ebx, byte [edx - 2]
lea esi, [ecx - 1]
mov edx, edi
cmp bl, byte [ecx]
mov ebx, eax
mov ecx, esi
je 0x5159f0
mov ecx, dword [esp + 0x2c]
mov edx, ecx
sub edx, edi
mov eax, dword [esp + 0x30]
cmp ebp, eax
jae 0x515a29
mov edi, dword [esp + 0x18]
jmp 0x515b0c
sub ecx, edx
cmp ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x18]
jne 0x515b0c
cmp dword [esp + 0xe0], eax
jae 0x515b0c
mov dword [esp + 0x40], edx
mov ecx, edx
neg ecx
shl ecx, 3
mov eax, dword [esp + 4]
rol eax, cl
mov dword [esp + 0xb0], eax
mov dword [esp + 0x2c], eax
shr eax, 0x18
mov dword [esp + 0x28], eax
mov ebp, dword [esp + 0xc0]
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x114]
nop
mov edx, edi
mov ecx, esi
mov eax, ebp
lea esi, [edi + 1]
mov dword [esp], esi
cmp esi, dword [esp + 0xbc]
jb 0x515aa7
lea edi, [edx - 4]
lea esi, [ecx - 4]
lea ebp, [eax + 4]
mov ebx, dword [esp + 0x2c]
cmp dword [edx - 3], ebx
je 0x515a80
mov dword [esp + 0x2c], ecx
mov esi, dword [esp]
cmp esi, dword [esp + 0xb8]
jbe 0x515c78
mov ecx, dword [esp + 0x28]
cmp byte [edx], cl
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x84]
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
jne 0x515b02
add dword [esp], eax
lea eax, [esp + 0xb2]
cmp edx, dword [esp + 0xb8]
jbe 0x515c51
movzx ecx, byte [edx - 1]
add edx, 0xffffffff
lea esi, [eax - 1]
cmp cl, byte [eax]
mov eax, esi
je 0x515ae0
add edx, 1
mov ecx, edx
mov edx, dword [esp + 0x40]
add edx, dword [esp + 0x50]
sub edx, ecx
mov ecx, ebp
sub ecx, edx
mov eax, dword [esp + 0x6c]
cmp ecx, eax
cmovbe ecx, eax
mov edx, ebp
sub edx, ecx
mov eax, dword [esp + 0xd8]
add edx, eax
cmp eax, ebx
ja 0x515b60
cmp edx, ebx
jb 0x515b60
sub ebp, ebx
mov edx, dword [esp + 0xd8]
add edx, ebp
mov eax, edx
not eax
mov ecx, dword [esp + 0x30]
add eax, ecx
cmp eax, 3
cmovb edx, ecx
mov dword [esp + 0x2c], 2
mov eax, edx
mov esi, dword [esp + 0xc]
mov ebp, dword [esp + 0x34]
jmp 0x515844
mov eax, ecx
not eax
mov esi, dword [esp + 0x30]
add eax, esi
cmp eax, 3
mov dword [esp + 0x40], ecx
cmovb ecx, esi
mov dword [esp], ecx
mov dword [esp + 0x2c], 2
cmp dword [esp + 0x90], 0
jne 0x515bc8
cmp eax, 3
mov ebp, dword [esp + 0x34]
jb 0x515bd5
cmp edx, ebx
cmovae edx, ebx
cmp dword [esp + 0xc], edx
jae 0x515be5
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
sub eax, ecx
cmp eax, 0xffff
ja 0x515ca9
lea eax, [ecx + ebp]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
mov esi, edx
jmp 0x515bed
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp]
jmp 0x515b57
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp]
jmp 0x515844
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x40]
movzx eax, cx
movzx eax, word [edi + eax*2 + 0x20000]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x30]
jae 0x515844
jmp 0x515ca5
mov edi, dword [esp]
jmp 0x515a10
mov ebx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x58]
jae 0x515c28
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0xc]
sub ecx, dword [esp + 0x44]
sub ecx, esi
add ecx, 4
cmp ecx, edx
jg 0x51556f
jmp 0x515660
mov edx, eax
cmp edx, ebx
jb 0x515377
jmp 0x5153a3
mov ecx, dword [esp]
jmp 0x515b02
mov ebx, dword [esp + 0x1c]
jmp 0x515a10
mov ecx, dword [esp + 0x4c]
cmp edx, dword [esp + 0xf0]
jb 0x515511
jmp 0x515520
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x84]
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
jmp 0x515b02
mov ebp, edi
mov ecx, edi
mov esi, dword [esp + 0x58]
cmp ecx, esi
jb 0x515906
jmp 0x51592a
mov edx, edi
jmp 0x515caf
mov edx, edi
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x4c]
test ebx, ebx
jle 0x515f3a
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x6c]
sub eax, ebp
cmp eax, 0xfffe
mov edi, edx
ja 0x515f4b
mov edx, dword [esp + 0xa4]
mov ecx, dword [edx + 0x40000]
mov eax, dword [edx + 0x40004]
mov dword [esp + 8], eax
sub ecx, eax
mov eax, dword [esp + 0x20]
imul eax, dword [eax], 0x9e3779b1
shr eax, 0x11
mov eax, dword [edx + eax*4]
mov dword [esp + 0x1c], eax
add ebp, eax
mov dword [esp + 0x2c], ecx
sub ebp, ecx
mov eax, dword [esp + 0x24]
sub eax, ebp
cmp eax, 0xffff
mov edx, esi
ja 0x515f5a
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x38]
lea eax, [esi + ecx]
mov dword [esp], eax
mov eax, 0xfffffffe
sub eax, dword [esp]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 8]
add eax, 0xffffffff
mov dword [esp + 0x40], eax
lea eax, [esi + ecx - 3]
mov dword [esp], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x70], eax
mov esi, dword [esp + 0x1c]
jmp 0x515da9
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x6c]
add eax, ecx
add eax, ebp
mov dword [esp + 0x70], eax
add ebp, dword [esp + 0x20]
mov dword [esp + 0x14], ebp
mov edx, ebx
movzx eax, si
mov ecx, dword [esp + 0xa4]
movzx eax, word [ecx + eax*2 + 0x20000]
sub esi, eax
mov ebp, dword [esp + 0x6c]
sub ebp, eax
mov eax, dword [esp + 0x24]
sub eax, ebp
cmp eax, 0x10000
mov ebx, dword [esp + 0x4c]
jae 0x515f65
sub ebx, 1
jb 0x515f65
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
cmp dword [ecx + esi], eax
mov dword [esp + 0x6c], ebp
jne 0x515d7a
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x2c]
sub edx, esi
add edx, dword [esp + 0x20]
mov eax, dword [esp + 0x58]
cmp edx, eax
cmova edx, eax
lea eax, [ecx + esi]
mov dword [esp + 0x1c], eax
add eax, 4
lea ecx, [edx - 3]
mov ebx, dword [esp + 0x44]
cmp ecx, ebx
jbe 0x515e9f
mov edi, dword [ebx]
xor edi, dword [eax]
je 0x515e95
bsf ebx, edi
shr ebx, 3
mov edi, dword [esp + 0x18]
add ebx, 4
cmp dword [esp + 0x90], 0
je 0x515efb
mov eax, dword [esp + 0xa4]
mov ecx, esi
mov esi, dword [eax + 0x4000c]
add esi, dword [esp + 8]
sub esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x78]
cmp eax, esi
cmovg esi, eax
xor edx, edx
test esi, esi
mov ebp, 0
cmovs ebp, esi
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x40]
lea edi, [eax + ecx]
nop word cs:[eax + eax]
nop dword [eax]
cmp edx, esi
jle 0x515e7a
lea eax, [edx - 1]
mov ecx, dword [esp]
movzx ecx, byte [ecx + edx]
cmp cl, byte [edi + edx]
mov edx, eax
je 0x515e60
add eax, 1
mov ebp, eax
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
sub ebx, ebp
mov edx, dword [esp + 0xc]
cmp ebx, edx
jle 0x515d7a
jmp 0x515d60
add eax, 4
mov ebx, dword [esp + 0x94]
cmp ebx, ecx
jae 0x515ec3
mov edi, dword [esp + 0x3c]
add edi, ebx
nop dword [eax]
mov ebp, dword [ebx]
xor ebp, dword [eax]
jne 0x515ede
add ebx, 4
add eax, 4
add edi, 4
cmp ebx, ecx
jb 0x515eb0
lea ecx, [edx - 1]
cmp ebx, ecx
jae 0x515f10
movzx ecx, word [eax]
cmp cx, word [ebx]
mov edi, dword [esp + 0x18]
jne 0x515f14
add ebx, 2
add eax, 2
jmp 0x515f14
bsf ebx, ebp
shr ebx, 3
add ebx, edi
mov edi, dword [esp + 0x18]
add ebx, 4
cmp dword [esp + 0x90], 0
jne 0x515e1c
xor ebp, ebp
sub ebx, ebp
mov edx, dword [esp + 0xc]
cmp ebx, edx
jle 0x515d7a
jmp 0x515d60
mov edi, dword [esp + 0x18]
cmp ebx, edx
jae 0x515f23
mov al, byte [eax]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
sub ebx, dword [esp + 0x44]
add ebx, 4
cmp dword [esp + 0x90], 0
jne 0x515e1c
jmp 0x515efb
mov eax, dword [esp + 0x80]
mov dword [esp + 0x70], eax
mov edi, edx
mov edx, esi
jmp 0x515f65
mov eax, dword [esp + 0x80]
mov dword [esp + 0x70], eax
mov edx, esi
jmp 0x515f65
mov eax, dword [esp + 0x80]
mov dword [esp + 0x70], eax
cmp edx, dword [esp + 0x7c]
je 0x517752
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0xe4]
cmp ebp, ebx
setb cl
mov eax, dword [esp + 0x8c]
add eax, ebx
mov esi, dword [esp + 0x14]
cmp esi, eax
setb al
and al, cl
cmovne ebx, ebp
mov ecx, esi
sub ecx, ebx
mov ebp, dword [esp + 0x70]
mov dword [esp + 0x80], ebp
cmp ecx, 3
jl 0x514fc0
test al, al
mov eax, dword [esp + 0x74]
cmovne eax, dword [esp + 0xfc]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x7c]
cmovne eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x64], ecx
mov esi, ebx
cmp eax, 0x12
mov ecx, 0x12
cmovl ecx, eax
mov dword [esp + 0xc0], ecx
add ecx, esi
mov dword [esp + 0x110], ecx
lea ecx, [esi + eax]
mov dword [esp + 0x98], ecx
mov dword [esp + 0x7c], eax
mov ecx, esi
mov dword [esp + 0x60], esi
add eax, esi
add eax, 3
mov dword [esp + 0xe4], eax
mov esi, dword [esp + 0x14]
mov eax, esi
mov ebx, dword [esp + 0x60]
sub eax, ebx
cmp eax, 0x11
jg 0x51605d
lea ecx, [esi + edx]
add ecx, 0xfffffffc
cmp dword [esp + 0x110], ecx
lea ecx, [eax + edx - 4]
cmovbe ecx, dword [esp + 0xc0]
mov eax, ebx
sub eax, esi
add eax, ecx
test eax, eax
jle 0x51605d
add esi, eax
mov ebp, dword [esp + 0x70]
add ebp, eax
sub edx, eax
mov eax, esi
mov dword [esp + 0x80], ebp
jmp 0x51606a
mov eax, esi
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x68], eax
lea ecx, [eax + edx]
cmp ecx, dword [esp + 0x118]
mov dword [esp + 0x54], ecx
ja 0x5178fb
lea eax, [ecx - 3]
mov ebp, dword [edi + 0x40004]
mov dword [esp + 0x20], eax
mov edx, eax
sub edx, ebp
mov ebx, dword [edi + 0x40010]
lea eax, [ebx + 0x10000]
lea esi, [edx - 0xffff]
cmp eax, edx
mov dword [esp + 0xf8], ebx
cmova esi, ebx
mov dword [esp + 0x6c], esi
mov eax, dword [ecx - 3]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x40014]
cmp eax, edx
mov ebx, 0xffff
mov dword [esp + 0x3c], edx
jae 0x516112
nop word cs:[eax + eax]
imul ecx, dword [ebp + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [edi + ecx*4]
cmp edx, 0xffff
cmovae edx, ebx
movzx esi, ax
mov word [edi + esi*2 + 0x20000], dx
mov edx, dword [esp + 0x3c]
mov dword [edi + ecx*4], eax
add eax, 1
cmp eax, edx
jb 0x5160e0
mov eax, dword [edi + 0x4000c]
mov dword [esp + 0x30], eax
mov esi, dword [esp + 0x20]
mov eax, esi
mov ecx, dword [esp + 0x68]
sub eax, ecx
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x4001c]
mov dword [esp + 0xb8], eax
mov eax, dword [edi + 0x40008]
mov dword [esp + 0x34], eax
mov dword [edi + 0x40014], edx
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov dword [esp], eax
mov ebx, dword [esp + 4]
movzx eax, bx
mov edx, ebx
shr edx, 0x10
xor edx, eax
sub ecx, esi
mov dword [esp + 0xa4], ecx
mov eax, ebx
shr eax, 0x18
movzx ecx, bl
mov dword [esp + 0xd8], eax
xor ecx, eax
or ecx, edx
mov edx, dword [esp + 0x38]
mov eax, dword [esp]
mov ecx, dword [edi + eax*4]
sete byte [esp + 0xa0]
lea eax, [esi + 4]
mov dword [esp + 0x90], eax
lea eax, [esi + 8]
mov dword [esp + 0x78], eax
cmp ecx, dword [esp + 0x6c]
mov dword [esp + 0x24], ebp
jae 0x5161bf
mov ebx, dword [esp + 0x100]
mov edx, dword [esp + 0x8c]
jmp 0x516d9c
mov eax, ecx
mov edi, dword [esp + 0x30]
lea ecx, [edi + ebp]
mov dword [esp], eax
mov eax, edx
neg eax
mov dword [esp + 0x70], eax
lea eax, [edi - 4]
mov dword [esp + 0x44], eax
neg esi
mov dword [esp + 0x108], esi
mov edx, dword [esp + 0x8c]
mov esi, dword [esp + 0x68]
lea eax, [esi + edx]
not eax
mov dword [esp + 0x9c], eax
lea eax, [edx + edi]
lea eax, [esi + eax - 3]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xf8]
mov esi, eax
sub esi, edi
mov dword [esp + 0x114], esi
mov ebx, dword [esp + 0x34]
lea esi, [ebx + eax]
mov dword [esp + 0xbc], esi
mov dword [esp + 0x84], ecx
add ecx, 4
mov dword [esp + 0x104], ecx
lea ecx, [ebx + edi]
mov esi, edi
mov dword [esp + 0xe8], ecx
lea eax, [ebx + eax + 4]
mov dword [esp + 0x5c], eax
mov edi, ebp
lea eax, [ebp - 1]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0x68]
lea eax, [edx + eax - 4]
mov dword [esp + 0x40], eax
lea eax, [ebx - 1]
mov dword [esp + 0x94], eax
lea eax, [ebx + esi - 1]
mov dword [esp + 0xfc], eax
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x100]
mov dword [esp + 0x1c], eax
mov eax, dword [esp]
xor ebp, ebp
mov ecx, esi
mov esi, ebx
nop word cs:[eax + eax]
nop dword [eax]
sub ecx, eax
mov ebx, ebp
mov dword [esp + 8], ebp
mov dword [esp], eax
mov dword [esp + 0x2c], ecx
jbe 0x516330
cmp eax, dword [esp + 0x44]
ja 0x516400
add esi, eax
mov eax, dword [esp + 4]
cmp dword [esi], eax
mov edi, dword [esp + 0x18]
jne 0x516700
mov eax, dword [esp + 0x20]
lea ebp, [eax + ecx]
mov edi, dword [esp + 0x58]
cmp ebp, edi
mov eax, ebp
cmova eax, edi
mov dword [esp + 0x28], esi
lea ecx, [esi + 4]
mov dword [esp + 0xac], eax
lea ebx, [eax - 3]
mov eax, dword [esp + 0x90]
cmp ebx, eax
mov dword [esp + 0xc], edx
jbe 0x516d11
mov eax, dword [eax]
xor eax, dword [ecx]
mov esi, dword [esp + 0x10]
je 0x516409
bsf edx, eax
shr edx, 3
mov ebx, dword [esp + 8]
lea ecx, [edx + 4]
cmp ebp, edi
jb 0x51647f
jmp 0x51664b
lea ebp, [edi + eax]
mov eax, dword [esp + 0x68]
movzx eax, word [eax + edx - 1]
mov ecx, dword [esp + 0x70]
add ecx, ebp
cmp ax, word [edx + ecx - 1]
jne 0x516400
mov eax, dword [esp + 4]
cmp dword [ebp], eax
mov edi, dword [esp + 0x18]
jne 0x516700
mov dword [esp + 0xc], edx
cmp dword [esp + 0x38], 0
je 0x5164e1
mov eax, dword [esp + 0x84]
sub eax, ebp
mov ecx, dword [esp + 0xa4]
cmp ecx, eax
cmovg eax, ecx
xor ecx, ecx
test eax, eax
mov esi, 0
cmovs esi, eax
mov edx, dword [esp + 0xe0]
mov edi, dword [esp]
add edx, edi
nop word [eax + eax]
cmp ecx, eax
jle 0x5163bf
lea edi, [ecx - 1]
mov ebx, dword [esp + 0x40]
movzx ebx, byte [ebx + ecx]
cmp bl, byte [edx + ecx]
mov ebx, dword [esp + 8]
mov ecx, edi
je 0x5163a0
add edi, 1
mov esi, edi
mov edi, dword [esp + 0x18]
lea edx, [ebp + 4]
mov eax, dword [esp + 0x90]
cmp dword [esp + 0x10], eax
jbe 0x5164f7
mov eax, dword [eax]
xor eax, dword [edx]
je 0x5164fb
bsf ecx, eax
shr ecx, 3
mov edx, dword [esp + 0xc]
sub ecx, esi
add ecx, 4
cmp ecx, edx
jg 0x5165ea
jmp 0x516700
mov edi, dword [esp + 0x18]
jmp 0x516700
add ecx, 4
mov edx, dword [esp + 0x78]
cmp edx, ebx
jae 0x516433
mov eax, dword [esp + 0x9c]
lea esi, [eax + edx]
nop
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x516464
add edx, 4
add ecx, 4
add esi, 4
cmp edx, ebx
jb 0x516420
mov eax, dword [esp + 0xac]
add eax, 0xffffffff
cmp edx, eax
jae 0x51661b
movzx eax, word [ecx]
cmp ax, word [edx]
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 8]
jne 0x516623
add edx, 2
add ecx, 2
jmp 0x516623
bsf edx, eax
shr edx, 3
add edx, esi
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 8]
lea ecx, [edx + 4]
cmp ebp, edi
jae 0x51664b
mov eax, dword [esp + 0x20]
add eax, edx
add eax, 4
mov edx, dword [esp + 0xac]
cmp eax, edx
jne 0x51664b
mov eax, edx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x84]
mov ebp, ecx
cmp esi, edx
jbe 0x51656b
mov edx, eax
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x516561
bsf edx, eax
shr edx, 3
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x28]
add ecx, edx
test eax, eax
jne 0x51665f
xor esi, esi
jmp 0x5166c0
xor esi, esi
lea edx, [ebp + 4]
mov eax, dword [esp + 0x90]
cmp dword [esp + 0x10], eax
ja 0x5163d7
mov ecx, eax
jmp 0x516502
add edx, 4
mov ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x10]
jae 0x516539
mov eax, dword [esp + 0x9c]
lea ebx, [eax + ecx]
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x5165cd
add ecx, 4
add edx, 4
add ebx, 4
cmp ecx, dword [esp + 0x10]
jb 0x516520
cmp ecx, dword [esp + 0xf0]
jae 0x516cdf
movzx eax, word [edx]
cmp ax, word [ecx]
mov ebx, dword [esp + 8]
jne 0x516ce3
add ecx, 2
add edx, 2
jmp 0x516ce3
add edx, 4
mov ebp, dword [esp + 0x104]
cmp edx, esi
jae 0x516d36
mov eax, dword [esp + 0x50]
sub eax, dword [esp]
mov ecx, dword [esp + 0xec]
cmp eax, ecx
cmovae eax, ecx
mov ebx, edx
sub ebx, eax
mov ecx, dword [esp + 0x4c]
nop
mov eax, dword [edx]
xor eax, dword [ebp]
jne 0x5165f8
add edx, 4
add ebp, 4
add ebx, 4
cmp edx, esi
jb 0x516590
cmp edx, dword [esp + 0xf0]
jae 0x516d47
movzx eax, word [ebp]
cmp ax, word [edx]
mov esi, dword [esp + 0x28]
jne 0x516d4b
add edx, 2
add ebp, 2
jmp 0x516d4b
bsf ecx, eax
shr ecx, 3
add ecx, ebx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
sub ecx, esi
add ecx, 4
cmp ecx, edx
jle 0x516700
add ebp, esi
mov dword [esp + 0xd4], ebp
jmp 0x5166e4
bsf edx, eax
shr edx, 3
add edx, ebx
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0x28]
add ecx, edx
test eax, eax
jne 0x51665f
jmp 0x5164da
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 8]
mov eax, dword [esp + 0xac]
cmp edx, eax
jae 0x516639
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
sub edx, dword [esp + 0x90]
lea ecx, [edx + 4]
cmp ebp, edi
jb 0x51647f
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x28]
test eax, eax
je 0x5164da
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0xbc]
sub eax, esi
mov ecx, dword [esp + 0xa4]
cmp ecx, eax
cmovg eax, ecx
xor edx, edx
test eax, eax
mov esi, 0
cmovs esi, eax
mov ecx, dword [esp + 0x94]
mov edi, dword [esp]
lea ebx, [ecx + edi]
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp edx, eax
jle 0x5166b8
lea edi, [edx - 1]
movzx ecx, byte [ebp + edx]
cmp cl, byte [ebx + edx]
mov edx, edi
je 0x5166a0
add edi, 1
mov esi, edi
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0x4c]
sub ecx, esi
mov edx, dword [esp + 0xc]
cmp ecx, edx
mov edi, dword [esp + 0x18]
jle 0x516700
mov eax, dword [esp + 0x24]
mov edx, ecx
mov ecx, dword [esp]
add eax, ecx
mov ecx, edx
add eax, esi
mov dword [esp + 0xd4], eax
add esi, dword [esp + 0x20]
mov dword [esp + 0xcc], esi
mov edx, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [esp + 0x1c]
add eax, 0xffffffff
mov dword [esp + 0x4c], eax
movzx eax, word [esp]
movzx ecx, word [edi + eax*2 + 0x20000]
test byte [esp + 0x48], 1
je 0x516820
cmp cx, 1
mov esi, dword [esp + 0x10]
jne 0x516820
cmp dword [esp + 0x14], 0
je 0x516837
mov ebp, dword [esp + 0x24]
mov eax, dword [esp]
cmp dword [esp + 0x14], 2
jne 0x5168d0
mov esi, ebp
lea edi, [eax - 1]
cmp edi, dword [esp + 0x6c]
jb 0x516830
mov dword [esp + 0x14], 2
cmp dword [esp + 0x2c], 3
jb 0x516830
cmp edi, dword [esp + 0x30]
mov ebp, esi
cmovb ebp, dword [esp + 0x34]
mov eax, dword [esp + 4]
cmp dword [ebp + edi], eax
jne 0x516830
mov dword [esp + 0xc], edx
cmp edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x58]
cmovb ecx, dword [esp + 0xe8]
mov eax, ebp
mov dword [esp + 0xac], ebp
mov dword [esp + 0xb4], edi
add ebp, edi
lea edx, [ebp + 4]
mov dword [esp + 0x2c], ecx
lea esi, [ecx - 3]
mov ecx, edx
cmp esi, edx
jbe 0x5167e6
mov eax, dword [esp]
mov ecx, dword [esp + 0xac]
add eax, ecx
add eax, 3
mov ecx, edx
nop
mov edi, dword [ecx]
xor edi, dword [esp + 4]
jne 0x516908
add ecx, 4
add eax, 4
cmp ecx, esi
jb 0x5167d0
cmp ecx, dword [esp + 0x2c]
mov esi, ecx
mov edi, dword [esp + 0x84]
jae 0x516917
mov ecx, dword [esp + 0x2c]
sub ecx, esi
mov eax, dword [esp + 4]
cmp byte [esi], al
jne 0x516917
add esi, 1
shr eax, 8
add ecx, 0xffffffff
jne 0x516803
mov esi, dword [esp + 0x2c]
jmp 0x516917
mov ebp, dword [esp + 0x24]
jmp 0x5168d0
mov ebp, esi
jmp 0x5168d0
mov dword [esp + 0x14], 1
cmp byte [esp + 0xa0], 0
mov ebp, dword [esp + 0x24]
je 0x5168d0
mov ebp, edx
mov edx, dword [esp + 0x90]
mov ebx, edx
cmp esi, edx
jbe 0x516872
mov eax, dword [edx]
xor eax, dword [esp + 4]
jne 0x516898
add edx, 4
add ebx, 4
cmp edx, esi
jb 0x516860
mov eax, dword [esp + 0x58]
cmp edx, eax
jae 0x5168a0
sub eax, ebx
lea esi, [edx + eax]
mov ebx, dword [esp + 4]
cmp byte [edx], bl
jne 0x516894
add edx, 1
shr ebx, 8
add eax, 0xffffffff
jne 0x516883
mov edx, esi
mov ebx, edx
jmp 0x5168a0
bsf eax, eax
shr eax, 3
add ebx, eax
mov eax, dword [esp]
add ebx, dword [esp + 0x108]
mov dword [esp + 0x14], 2
mov edx, ebp
mov ebp, dword [esp + 0x24]
cmp dword [esp + 0x14], 2
je 0x51674d
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, cx
mov ecx, dword [esp]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
cmp eax, dword [esp + 0x6c]
jb 0x516d98
mov edi, ebp
mov ebp, ebx
cmp dword [esp + 0x1c], 1
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x1c], ebx
jg 0x5162a0
jmp 0x516d9c
bsf esi, edi
shr esi, 3
add esi, eax
mov edi, dword [esp + 0x84]
sub esi, edx
add esi, 4
mov eax, dword [esp + 0xb4]
cmp eax, dword [esp + 0x30]
mov dword [esp + 8], ebx
mov dword [esp + 0x14], ebp
jae 0x516956
lea eax, [esi + ebp]
cmp eax, dword [esp + 0x2c]
je 0x516969
mov dword [esp + 0xd0], esi
mov eax, dword [esp + 0xbc]
mov dword [esp + 0xf4], eax
mov edi, eax
jmp 0x5169f0
mov dword [esp + 0xd0], esi
mov dword [esp + 0xf4], edi
jmp 0x5169f0
mov ebx, esi
lea ecx, [esi*8]
mov edx, dword [esp + 4]
rol edx, cl
cmp dword [esp + 0x10], edi
mov esi, dword [esp + 0x58]
mov ebp, edi
mov ecx, edi
jbe 0x5169a2
nop word cs:[eax + eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x5169c9
add ecx, 4
add ebp, 4
cmp ecx, dword [esp + 0x10]
jb 0x516990
cmp ecx, esi
jae 0x5169d1
mov eax, esi
sub eax, ebp
lea esi, [ecx + eax]
cmp byte [ecx], dl
jne 0x5169be
add ecx, 1
shr edx, 8
add eax, 0xffffffff
jne 0x5169ad
mov ecx, esi
mov ebp, ecx
mov edi, dword [esp + 0x84]
jmp 0x5169d1
bsf eax, eax
shr eax, 3
add ebp, eax
sub ebx, edi
add ebx, ebp
mov dword [esp + 0xd0], ebx
mov eax, dword [esp + 0xbc]
mov dword [esp + 0xf4], eax
mov edi, eax
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 4]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x28], edi
lea eax, [edi + 4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp]
mov ecx, dword [esp + 0xac]
lea ebx, [ecx + eax]
xor edi, edi
nop word cs:[eax + eax]
nop
mov esi, edi
mov edx, ebp
mov eax, dword [esp + 0x14]
add eax, edi
cmp eax, dword [esp + 0x2c]
jb 0x516a40
lea edi, [esi - 4]
lea ebp, [edx - 4]
mov ecx, dword [esp + 4]
cmp dword [ebx + esi - 5], ecx
je 0x516a20
lea edi, [esi + ebx]
add edi, 0xffffffff
cmp eax, dword [esp + 0x28]
mov ebp, dword [esp + 0xb4]
jbe 0x516d2d
mov ecx, dword [esp + 0xd8]
cmp byte [esi + ebx - 2], cl
mov ebx, dword [esp + 8]
jne 0x516ab0
mov ecx, dword [esp + 0xf4]
sub ecx, dword [esp]
sub ecx, dword [esp + 0xac]
sub ecx, esi
add eax, ecx
add eax, 1
lea ecx, [esp + 0xb2]
nop word [eax + eax]
lea edi, [edx - 1]
cmp edi, dword [esp + 0x28]
jbe 0x516cd8
movzx ebx, byte [edx - 2]
lea esi, [ecx - 1]
mov edx, edi
cmp bl, byte [ecx]
mov ebx, dword [esp + 8]
mov ecx, esi
je 0x516a90
mov ecx, dword [esp + 0x14]
mov edx, ecx
sub edx, edi
mov eax, dword [esp + 0x30]
cmp ebp, eax
jae 0x516acd
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
jmp 0x516bd3
sub ecx, edx
cmp ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
jne 0x516bd3
cmp dword [esp + 0xf8], eax
jae 0x516bd3
mov dword [esp + 0x2c], edx
mov ecx, edx
neg ecx
shl ecx, 3
mov eax, dword [esp + 4]
rol eax, cl
mov dword [esp + 0xb0], eax
mov dword [esp + 0x14], eax
shr eax, 0x18
mov dword [esp + 0x28], eax
mov ebp, dword [esp + 0x114]
mov esi, dword [esp + 0xe8]
mov edi, dword [esp + 0xfc]
nop dword [eax]
mov edx, edi
mov ecx, esi
mov eax, ebp
lea esi, [edi + 1]
mov dword [esp + 8], esi
cmp esi, dword [esp + 0x5c]
jb 0x516b5b
lea edi, [edx - 4]
lea esi, [ecx - 4]
lea ebp, [eax + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x14]
cmp dword [edx - 3], eax
mov eax, dword [esp]
je 0x516b30
mov dword [esp], ecx
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0xbc]
jbe 0x516d7d
mov ecx, dword [esp + 0x28]
cmp byte [edx], cl
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
mov ebp, dword [esp + 0xb4]
mov ecx, dword [esp]
jne 0x516bc6
add dword [esp + 8], eax
lea eax, [esp + 0xb2]
nop word cs:[eax + eax]
nop
cmp edx, dword [esp + 0xbc]
jbe 0x516d20
movzx ecx, byte [edx - 1]
add edx, 0xffffffff
lea esi, [eax - 1]
cmp cl, byte [eax]
mov eax, esi
je 0x516ba0
add edx, 1
mov ecx, edx
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
add edx, dword [esp + 0xe8]
sub edx, ecx
mov ecx, ebp
sub ecx, edx
mov eax, dword [esp + 0x6c]
cmp ecx, eax
cmovbe ecx, eax
mov edx, ebp
sub edx, ecx
mov eax, dword [esp + 0xd0]
add edx, eax
cmp eax, ebx
ja 0x516c20
cmp edx, ebx
jb 0x516c20
sub ebp, ebx
mov edx, dword [esp + 0xd0]
add edx, ebp
mov eax, edx
not eax
mov ecx, dword [esp + 0x30]
add eax, ecx
cmp eax, 3
cmovb edx, ecx
mov dword [esp + 0x14], 2
mov eax, edx
mov edx, dword [esp + 0xc]
jmp 0x516c99
mov eax, ecx
not eax
mov esi, dword [esp + 0x30]
add eax, esi
cmp eax, 3
mov dword [esp + 8], ecx
cmovb ecx, esi
mov dword [esp], ecx
mov dword [esp + 0x14], 2
cmp dword [esp + 0x38], 0
jne 0x516c8a
cmp eax, 3
mov esi, dword [esp + 0x34]
mov ebp, dword [esp + 0x24]
jb 0x516ca2
cmp edx, ebx
cmovae edx, ebx
cmp dword [esp + 0xc], edx
jae 0x516cb2
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 8]
sub eax, ecx
cmp eax, 0xffff
ja 0x516d94
lea eax, [ecx + ebp]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0xcc], eax
jmp 0x516cba
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, dword [esp]
mov ebp, dword [esp + 0x24]
jmp 0x5168e2
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp]
jmp 0x5168e2
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
movzx eax, cx
movzx eax, word [edi + eax*2 + 0x20000]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x30]
jae 0x5168e2
jmp 0x516d98
mov edi, eax
jmp 0x516ab0
mov ebx, dword [esp + 8]
cmp ecx, dword [esp + 0x58]
jae 0x516cf4
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0xc]
sub ecx, dword [esp + 0x90]
sub ecx, esi
add ecx, 4
cmp ecx, edx
jg 0x5165ea
jmp 0x516700
mov edx, eax
cmp edx, ebx
jb 0x516414
jmp 0x516433
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 8]
jmp 0x516bc6
mov ebx, dword [esp + 8]
jmp 0x516ab0
mov ecx, dword [esp + 0x4c]
cmp edx, dword [esp + 0xf0]
jb 0x5165b1
mov esi, dword [esp + 0x28]
cmp edx, edi
jae 0x516d5b
mov al, byte [ebp]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
mov ebx, dword [esp + 8]
sub edx, dword [esp + 0xac]
add ecx, edx
test eax, eax
jne 0x51665f
jmp 0x5164da
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
mov ebp, dword [esp + 0xb4]
mov ecx, dword [esp]
jmp 0x516bc6
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x4c]
test ebx, ebx
jle 0x517063
mov eax, dword [esp + 0x3c]
mov ebp, dword [esp + 0x6c]
sub eax, ebp
cmp eax, 0xfffe
mov edi, dword [esp + 0x18]
ja 0x51700f
mov esi, dword [esp + 0xb8]
mov ecx, dword [esi + 0x40000]
mov eax, dword [esi + 0x40004]
mov dword [esp + 0x1c], eax
sub ecx, eax
mov eax, dword [esp + 0x20]
imul eax, dword [eax], 0x9e3779b1
shr eax, 0x11
mov esi, dword [esi + eax*4]
mov eax, esi
mov dword [esp + 8], esi
add ebp, esi
mov dword [esp + 0x40], ecx
sub ebp, ecx
mov eax, dword [esp + 0x3c]
sub eax, ebp
cmp eax, 0xffff
ja 0x51700f
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x8c]
lea esi, [eax + ecx]
not esi
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x1c]
add esi, 0xffffffff
mov dword [esp + 0x30], esi
lea eax, [eax + ecx - 4]
mov dword [esp], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0xd4]
jmp 0x516e77
mov ebx, dword [esp + 8]
movzx eax, bx
mov ecx, dword [esp + 0xb8]
movzx eax, word [ecx + eax*2 + 0x20000]
sub ebx, eax
mov dword [esp + 8], ebx
mov ebp, dword [esp + 0x6c]
sub ebp, eax
mov eax, dword [esp + 0x3c]
sub eax, ebp
cmp eax, 0x10000
mov ebx, dword [esp + 0x4c]
jae 0x517021
sub ebx, 1
jb 0x517021
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 8]
cmp dword [ecx + ebx], eax
mov dword [esp + 0x6c], ebp
jne 0x516e40
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x40]
sub edx, ebx
add edx, dword [esp + 0x20]
mov eax, dword [esp + 0x58]
cmp edx, eax
cmova edx, eax
lea eax, [ecx + ebx]
mov dword [esp + 0x2c], eax
add eax, 4
lea ecx, [edx - 3]
mov ebx, dword [esp + 0x90]
cmp ecx, ebx
jbe 0x516f57
mov edi, dword [ebx]
xor edi, dword [eax]
je 0x516f50
bsf ebx, edi
shr ebx, 3
add ebx, 4
cmp dword [esp + 0x38], 0
je 0x516fb7
mov dword [esp + 0x70], esi
mov eax, dword [esp + 0xb8]
mov esi, dword [eax + 0x4000c]
add esi, dword [esp + 0x1c]
sub esi, dword [esp + 0x2c]
mov eax, dword [esp + 0xa4]
cmp eax, esi
cmovg esi, eax
xor edx, edx
test esi, esi
mov ebp, 0
cmovs ebp, esi
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x30]
lea edi, [ecx + eax]
nop word cs:[eax + eax]
nop dword [eax]
cmp edx, esi
jle 0x516f4a
lea eax, [edx - 1]
mov ecx, dword [esp]
movzx ecx, byte [ecx + edx]
cmp cl, byte [edi + edx]
mov edx, eax
je 0x516f30
add eax, 1
mov ebp, eax
mov esi, dword [esp + 0x70]
jmp 0x516fb9
add eax, 4
mov ebx, dword [esp + 0x78]
cmp ebx, ecx
jae 0x516f83
mov edi, dword [esp + 0x34]
add edi, ebx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov ebp, dword [ebx]
xor ebp, dword [eax]
jne 0x516fa1
add ebx, 4
add eax, 4
add edi, 4
cmp ebx, ecx
jb 0x516f70
lea ecx, [edx - 1]
cmp ebx, ecx
jae 0x516fe7
movzx ecx, word [eax]
cmp cx, word [ebx]
mov edi, dword [esp + 0x90]
jne 0x516fee
add ebx, 2
add eax, 2
jmp 0x516fee
bsf ebx, ebp
shr ebx, 3
add ebx, edi
add ebx, 4
cmp dword [esp + 0x38], 0
jne 0x516ee6
xor ebp, ebp
sub ebx, ebp
mov edx, dword [esp + 0xc]
cmp ebx, edx
mov edi, dword [esp + 0x18]
jle 0x516e40
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x6c]
lea esi, [eax + ecx]
add esi, ebp
add ebp, dword [esp + 0x20]
mov dword [esp + 0x14], ebp
mov edx, ebx
jmp 0x516e40
mov edi, dword [esp + 0x90]
cmp ebx, edx
jae 0x516ffd
mov al, byte [eax]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
sub ebx, edi
add ebx, 4
cmp dword [esp + 0x38], 0
jne 0x516ee6
jmp 0x516fb7
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0xd4]
cmp edx, dword [esp + 0x8c]
je 0x5178e9
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x14]
cmp esi, dword [esp + 0xe4]
jae 0x517087
mov dword [esp + 0xcc], esi
mov eax, dword [esp + 0x70]
mov dword [esp + 0xd4], eax
cmp esi, dword [esp + 0x98]
jb 0x516018
jmp 0x517411
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0xd4]
mov edi, dword [esp + 0x18]
cmp edx, dword [esp + 0x8c]
jne 0x51702e
jmp 0x5178e9
mov edi, dword [esp + 0x68]
cmp edi, dword [esp + 0x98]
mov dword [esp + 0xc], edx
jae 0x5170ed
mov eax, edi
mov ebx, dword [esp + 0x60]
sub eax, ebx
cmp eax, 0x11
jg 0x5170fe
mov ecx, dword [esp + 0x54]
add ecx, 0xfffffffc
cmp dword [esp + 0x110], ecx
mov ecx, dword [esp + 0x8c]
lea eax, [ecx + eax - 4]
mov edx, dword [esp + 0xc0]
cmova edx, eax
mov eax, ebx
sub eax, edi
mov dword [esp + 0xc0], edx
add eax, edx
test eax, eax
jle 0x517105
add edi, eax
add dword [esp + 0x80], eax
sub ecx, eax
mov dword [esp + 0x8c], ecx
jmp 0x517105
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xc0], eax
mov ebx, dword [esp + 0x60]
jmp 0x517105
mov dword [esp + 0xc0], eax
sub ebx, dword [esp + 0x64]
mov eax, ebx
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0xa8], 0
je 0x517139
shr edx, 7
add edx, dword [esp + 0x88]
lea eax, [ebx + edx]
add eax, 9
cmp eax, dword [esp + 0xc8]
ja 0x51bdfa
mov ecx, dword [esp + 0x88]
lea esi, [ecx + 1]
cmp ebx, 0xf
mov dword [esp + 0x68], edi
jb 0x5171a0
lea eax, [ebx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x517199
lea eax, [ebx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
mov ecx, dword [esp + 0x88]
lea esi, [ecx + edi]
add esi, 2
sub edi, eax
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov byte [esi], al
add esi, 1
jmp 0x5171a7
mov eax, ebx
shl al, 4
mov byte [ecx], al
mov ecx, ebx
mov eax, dword [esp + 0x60]
add eax, esi
mov edx, dword [esp + 0x64]
sub eax, edx
lea ebp, [esi + 8]
cmp eax, ebp
mov ebx, ebp
cmova ebx, eax
mov dword [esp + 8], ecx
lea edi, [esi + ecx]
mov ecx, esi
not ecx
mov dword [esp], ecx
add ebx, ecx
mov dword [esp + 0x64], edx
mov ecx, esi
mov dword [esp + 4], ebx
cmp ebx, 0x18
jb 0x51729a
cmp eax, ebp
cmova ebp, eax
add ebp, dword [esp]
and ebp, 0xfffffff8
mov eax, dword [esp + 0x64]
add eax, ebp
add eax, 8
cmp esi, eax
jae 0x517210
lea eax, [esi + ebp]
add eax, 8
mov ebx, dword [esp + 0x64]
mov edx, ebx
mov ecx, esi
cmp ebx, eax
jb 0x51729a
mov eax, dword [esp + 4]
shr eax, 3
add eax, 1
mov dword [esp + 4], eax
mov ebp, eax
and ebp, 0xfffffffc
lea eax, [ebp - 4]
mov edx, eax
shr edx, 2
add edx, 1
test eax, eax
je 0x51726d
mov eax, edx
and eax, 0xfffffffe
xor ebx, ebx
mov ecx, dword [esp + 0x64]
movups xmm0, xmmword [ecx + ebx*8]
movups xmm1, xmmword [ecx + ebx*8 + 0x10]
movups xmmword [esi + ebx*8], xmm0
movups xmmword [esi + ebx*8 + 0x10], xmm1
movups xmm0, xmmword [ecx + ebx*8 + 0x20]
movups xmm1, xmmword [ecx + ebx*8 + 0x30]
movups xmmword [esi + ebx*8 + 0x20], xmm0
movups xmmword [esi + ebx*8 + 0x30], xmm1
add ebx, 8
add eax, 0xfffffffe
jne 0x51723d
jmp 0x51726f
xor ebx, ebx
test dl, 1
je 0x51728a
mov eax, dword [esp + 0x64]
movups xmm0, xmmword [eax + ebx*8]
movups xmm1, xmmword [eax + ebx*8 + 0x10]
movups xmmword [esi + ebx*8], xmm0
movups xmmword [esi + ebx*8 + 0x10], xmm1
cmp dword [esp + 4], ebp
je 0x5172ac
mov eax, dword [esp + 0x64]
lea edx, [eax + ebp*8]
lea ecx, [esi + ebp*8]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, edi
jb 0x51729a
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x74]
mov ecx, dword [esp + 0xc0]
add ecx, 0xfffffffc
mov word [edi], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0xa8], 0
je 0x5172ea
shr edx, 7
lea eax, [edi + edx]
add eax, 8
cmp eax, dword [esp + 0xc8]
ja 0x51bdfa
add edi, 2
mov edx, dword [esp + 0x88]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x5173be
add al, 0xf
mov byte [edx], al
mov ebx, dword [esp + 0xc0]
lea eax, [ebx - 0x13]
cmp eax, 0x1fe
jb 0x517358
lea eax, [ebx - 0x211]
mov ecx, 0x80808081
mul ecx
mov ebp, edx
shr ebp, 8
lea eax, [ebp + 2]
add eax, ebp
push eax
push 0xff
push edi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 8]
lea eax, [eax + ebp*2]
lea edi, [esi + eax]
add edi, 4
imul eax, ebp, 0xfffffe02
add eax, ebx
add eax, 0xfffffdef
mov edx, dword [esp + 0xc]
cmp eax, 0xff
mov ecx, dword [esp + 0x60]
jb 0x517372
add eax, 0xffffff01
mov byte [edi], 0xff
add edi, 1
mov byte [edi], al
add edi, 1
add ecx, dword [esp + 0xc0]
mov dword [esp + 0x64], ecx
mov esi, dword [esp + 0x68]
mov dword [esp + 0x88], edi
mov eax, dword [esp + 0x80]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x8c]
mov edi, dword [esp + 0x18]
jmp 0x515fd9
add al, cl
mov byte [edx], al
mov eax, dword [esp + 0x60]
add eax, dword [esp + 0xc0]
mov dword [esp + 0x64], eax
mov esi, dword [esp + 0x68]
mov dword [esp + 0x88], edi
mov eax, dword [esp + 0x80]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x8c]
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
jmp 0x515fd9
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x98]
cmp edi, ebx
mov dword [esp + 0xc], edx
jae 0x517460
mov eax, ebx
sub eax, edi
mov esi, dword [esp + 0x8c]
sub esi, eax
mov ecx, esi
mov dword [esp + 0x8c], esi
cmp esi, 3
jg 0x517457
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x80], eax
mov dword [esp + 0x8c], edx
jmp 0x517460
add dword [esp + 0x80], eax
mov edi, ebx
mov ebx, dword [esp + 0x60]
sub ebx, dword [esp + 0x64]
mov eax, ebx
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0xa8], 0
je 0x517498
shr edx, 7
add edx, dword [esp + 0x88]
lea eax, [ebx + edx]
add eax, 9
cmp eax, dword [esp + 0xc8]
ja 0x51be1a
mov ecx, dword [esp + 0x88]
lea esi, [ecx + 1]
cmp ebx, 0xf
mov dword [esp + 0x68], edi
jb 0x5174ff
lea eax, [ebx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x5174f8
lea eax, [ebx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
mov ecx, dword [esp + 0x88]
lea esi, [ecx + edi]
add esi, 2
sub edi, eax
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov byte [esi], al
add esi, 1
jmp 0x517506
mov eax, ebx
shl al, 4
mov byte [ecx], al
mov ecx, ebx
mov eax, dword [esp + 0x60]
add eax, esi
mov edx, dword [esp + 0x64]
sub eax, edx
lea ebp, [esi + 8]
cmp eax, ebp
mov ebx, ebp
cmova ebx, eax
mov dword [esp + 8], ecx
lea edi, [esi + ecx]
mov ecx, esi
not ecx
mov dword [esp], ecx
add ebx, ecx
mov dword [esp + 0x64], edx
mov ecx, esi
mov dword [esp + 4], ebx
cmp ebx, 0x18
jb 0x5175f9
cmp eax, ebp
cmova ebp, eax
add ebp, dword [esp]
and ebp, 0xfffffff8
mov eax, dword [esp + 0x64]
add eax, ebp
add eax, 8
cmp esi, eax
jae 0x51756f
lea eax, [esi + ebp]
add eax, 8
mov ebx, dword [esp + 0x64]
mov edx, ebx
mov ecx, esi
cmp ebx, eax
jb 0x5175f9
mov eax, dword [esp + 4]
shr eax, 3
add eax, 1
mov dword [esp + 4], eax
mov ebp, eax
and ebp, 0xfffffffc
lea eax, [ebp - 4]
mov edx, eax
shr edx, 2
add edx, 1
test eax, eax
je 0x5175cc
mov eax, edx
and eax, 0xfffffffe
xor ebx, ebx
mov ecx, dword [esp + 0x64]
movups xmm0, xmmword [ecx + ebx*8]
movups xmm1, xmmword [ecx + ebx*8 + 0x10]
movups xmmword [esi + ebx*8], xmm0
movups xmmword [esi + ebx*8 + 0x10], xmm1
movups xmm0, xmmword [ecx + ebx*8 + 0x20]
movups xmm1, xmmword [ecx + ebx*8 + 0x30]
movups xmmword [esi + ebx*8 + 0x20], xmm0
movups xmmword [esi + ebx*8 + 0x30], xmm1
add ebx, 8
add eax, 0xfffffffe
jne 0x51759c
jmp 0x5175ce
xor ebx, ebx
test dl, 1
je 0x5175e9
mov eax, dword [esp + 0x64]
movups xmm0, xmmword [eax + ebx*8]
movups xmm1, xmmword [eax + ebx*8 + 0x10]
movups xmmword [esi + ebx*8], xmm0
movups xmmword [esi + ebx*8 + 0x10], xmm1
cmp dword [esp + 4], ebp
je 0x51760b
mov eax, dword [esp + 0x64]
lea edx, [eax + ebp*8]
lea ecx, [esi + ebp*8]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, edi
jb 0x5175f9
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x7c]
add ecx, 0xfffffffc
mov word [edi], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0xa8], 0
je 0x517646
shr edx, 7
lea eax, [edi + edx]
add eax, 8
cmp eax, dword [esp + 0xc8]
ja 0x51be1a
add edi, 2
mov edx, dword [esp + 0x88]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x51770b
add al, 0xf
mov byte [edx], al
mov ebx, dword [esp + 0x7c]
lea eax, [ebx - 0x13]
cmp eax, 0x1fe
jb 0x5176b1
lea eax, [ebx - 0x211]
mov ecx, 0x80808081
mul ecx
mov ebp, edx
shr ebp, 8
lea eax, [ebp + 2]
add eax, ebp
push eax
push 0xff
push edi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 8]
lea eax, [eax + ebp*2]
lea edi, [esi + eax]
add edi, 4
imul eax, ebp, 0xfffffe02
add eax, ebx
add eax, 0xfffffdef
cmp eax, 0xff
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 0x70]
jb 0x5176cb
add eax, 0xffffff01
mov byte [edi], 0xff
add edi, 1
mov byte [edi], al
add edi, 1
mov dword [esp + 0x88], edi
mov esi, dword [esp + 0x14]
mov dword [esp + 0xcc], esi
mov dword [esp + 0xd4], ebp
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xfc], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0xe4], ecx
mov edi, dword [esp + 0x18]
jmp 0x514fb4
add al, cl
mov byte [edx], al
mov dword [esp + 0x88], edi
mov esi, dword [esp + 0x14]
mov dword [esp + 0xcc], esi
mov ebp, dword [esp + 0x70]
mov dword [esp + 0xd4], ebp
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xfc], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0xe4], ecx
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
jmp 0x514fb4
mov eax, dword [esp + 0x70]
mov dword [esp + 0x80], eax
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x38]
sub ebx, eax
mov eax, ebx
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0xa8], 0
mov ecx, dword [esp + 0x88]
je 0x5177a0
shr edx, 7
add edx, ecx
lea eax, [ebx + edx]
add eax, 9
cmp eax, dword [esp + 0xc8]
ja 0x51bd27
lea esi, [ecx + 1]
cmp ebx, 0xf
mov dword [esp + 0x68], edi
jb 0x517807
lea eax, [ebx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x5177f9
lea eax, [ebx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
mov ecx, dword [esp + 0x88]
lea esi, [ecx + edi]
add esi, 2
sub edi, eax
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov ecx, dword [esp + 0x98]
mov byte [esi], al
add esi, 1
jmp 0x517815
mov eax, ebx
shl al, 4
mov byte [ecx], al
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x38]
mov edx, ebx
lea ebx, [esi + eax]
sub ebx, ecx
lea ebp, [esi + 8]
cmp ebx, ebp
mov edi, ebp
cmova edi, ebx
mov dword [esp], edx
lea eax, [esi + edx]
mov dword [esp + 0x50], eax
mov eax, esi
not eax
add edi, eax
mov edx, ecx
mov dword [esp + 0x98], ecx
mov ecx, esi
mov dword [esp + 4], edi
cmp edi, 0x18
jb 0x517ac0
cmp ebx, ebp
cmova ebp, ebx
add ebp, eax
and ebp, 0xfffffff8
mov eax, dword [esp + 0x98]
lea ecx, [eax + ebp]
add ecx, 8
cmp esi, ecx
jae 0x517886
lea edi, [esi + ebp]
add edi, 8
mov eax, dword [esp + 0x98]
mov edx, eax
mov ecx, esi
cmp eax, edi
jb 0x517ac0
mov ebp, dword [esp + 4]
shr ebp, 3
add ebp, 1
mov ecx, ebp
and ecx, 0xfffffffc
lea edi, [ecx - 4]
mov edx, edi
shr edx, 2
add edx, 1
test edi, edi
je 0x517a8b
mov ebx, edx
and ebx, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x98]
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [esi + edi*8], xmm0
movups xmmword [esi + edi*8 + 0x10], xmm1
movups xmm0, xmmword [eax + edi*8 + 0x20]
movups xmm1, xmmword [eax + edi*8 + 0x30]
movups xmmword [esi + edi*8 + 0x20], xmm0
movups xmmword [esi + edi*8 + 0x30], xmm1
add edi, 8
add ebx, 0xfffffffe
jne 0x5178b6
jmp 0x517a8d
mov dword [esp + 0xd4], esi
mov eax, dword [esp + 0x14]
mov dword [esp + 0xcc], eax
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x68]
mov ebp, eax
mov esi, dword [esp + 0x60]
sub ebp, esi
cmp eax, ecx
cmovae ebp, dword [esp + 0x7c]
mov edi, esi
sub edi, dword [esp + 0x64]
mov eax, edi
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0xa8], 0
mov ecx, dword [esp + 0x88]
je 0x51794d
shr edx, 7
add edx, ecx
lea eax, [edi + edx]
add eax, 9
cmp eax, dword [esp + 0xc8]
ja 0x51bde2
lea ebx, [ecx + 1]
cmp edi, 0xf
mov dword [esp + 0xc0], ebp
mov edx, edi
mov dword [esp + 8], edi
jb 0x5179ba
lea eax, [edx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x5179b3
lea eax, [edx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ebx
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x14]
add esp, 0xc
mov eax, edi
shl eax, 8
mov ecx, dword [esp + 0x88]
lea ebx, [ecx + edi]
add ebx, 2
sub edi, eax
lea eax, [edx + edi]
add eax, 0xfffffef2
mov byte [ebx], al
add ebx, 1
jmp 0x5179c1
mov eax, edx
shl al, 4
mov byte [ecx], al
lea ebp, [ebx + esi]
mov ecx, dword [esp + 0x64]
sub ebp, ecx
mov eax, ebx
add ebx, 8
cmp ebp, ebx
mov edi, ebx
cmova edi, ebp
lea esi, [eax + edx]
mov edx, eax
not edx
mov dword [esp], edx
add edi, edx
mov dword [esp + 0x64], ecx
mov edx, ecx
mov ecx, eax
mov dword [esp + 4], edi
cmp edi, 0x18
mov edi, eax
jb 0x517bc9
cmp ebp, ebx
cmova ebx, ebp
add ebx, dword [esp]
and ebx, 0xfffffff8
mov eax, dword [esp + 0x64]
add eax, ebx
add eax, 8
cmp edi, eax
jae 0x517a27
lea eax, [edi + ebx]
add eax, 8
mov ebx, dword [esp + 0x64]
mov edx, ebx
mov ecx, edi
cmp ebx, eax
jb 0x517bc9
mov ebx, edi
mov ecx, dword [esp + 4]
shr ecx, 3
add ecx, 1
mov dword [esp + 4], ecx
and ecx, 0xfffffffc
lea eax, [ecx - 4]
mov edx, eax
shr edx, 2
add edx, 1
test eax, eax
je 0x517b9a
mov ebp, edx
and ebp, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x64]
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [ebx + edi*8], xmm0
movups xmmword [ebx + edi*8 + 0x10], xmm1
movups xmm0, xmmword [eax + edi*8 + 0x20]
movups xmm1, xmmword [eax + edi*8 + 0x30]
movups xmmword [ebx + edi*8 + 0x20], xmm0
movups xmmword [ebx + edi*8 + 0x30], xmm1
add edi, 8
add ebp, 0xfffffffe
jne 0x517a58
jmp 0x517ba0
xor edi, edi
test dl, 1
je 0x517aab
mov eax, dword [esp + 0x98]
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [esi + edi*8], xmm0
movups xmmword [esi + edi*8 + 0x10], xmm1
cmp ebp, ecx
mov ebx, dword [esp + 0x50]
je 0x517ae2
mov eax, dword [esp + 0x98]
lea edx, [eax + ecx*8]
lea ecx, [esi + ecx*8]
mov ebx, dword [esp + 0x50]
nop word cs:[eax + eax]
nop
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, ebx
jb 0x517ad0
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x74]
mov edi, dword [esp + 0x7c]
lea ecx, [edi - 4]
mov word [ebx], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0xa8], 0
je 0x517b1d
shr edx, 7
lea eax, [ebx + edx]
add eax, 8
cmp eax, dword [esp + 0xc8]
ja 0x51bd43
add ebx, 2
mov dword [esp + 0x50], ebx
mov edx, dword [esp + 0x88]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x517b91
add al, 0xf
mov byte [edx], al
lea eax, [edi - 0x13]
cmp eax, 0x1fe
jb 0x517f33
lea eax, [edi - 0x211]
mov ecx, 0x80808081
mul ecx
mov ebx, edi
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push dword [esp + 0x58]
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp]
lea eax, [eax + edi*2]
add eax, esi
add eax, 4
mov dword [esp + 0x50], eax
imul eax, edi, 0xfffffe02
add eax, ebx
add eax, 0xfffffdef
jmp 0x517f33
add al, cl
mov byte [edx], al
jmp 0x517f6a
xor edi, edi
mov eax, dword [esp + 0x64]
test dl, 1
je 0x517bb7
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [ebx + edi*8], xmm0
movups xmmword [ebx + edi*8 + 0x10], xmm1
cmp dword [esp + 4], ecx
je 0x517bdd
mov eax, dword [esp + 0x64]
lea edx, [eax + ecx*8]
lea ecx, [ebx + ecx*8]
mov edi, ebx
mov ebx, edi
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, esi
jb 0x517bcb
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x74]
mov ebp, dword [esp + 0xc0]
lea ecx, [ebp - 4]
mov word [esi], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0xa8], 0
mov edi, dword [esp + 0x68]
je 0x517c1f
shr edx, 7
lea eax, [esi + edx]
add eax, 8
cmp eax, dword [esp + 0xc8]
ja 0x51bdf0
add esi, 2
mov edx, dword [esp + 0x88]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x517cb9
add al, 0xf
mov byte [edx], al
lea eax, [ebp - 0x13]
cmp eax, 0x1fe
jb 0x517ca0
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x60]
add ebp, eax
cmp edi, ebp
cmovb ebp, edi
sub ebp, eax
lea eax, [ebp - 0x211]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 8]
lea eax, [eax + edi*2]
imul ecx, edi, 0xfffffe02
mov edi, dword [esp + 0x68]
lea esi, [ebx + eax]
add esi, 4
lea eax, [ecx + ebp]
add eax, 0xfffffdef
mov ebp, dword [esp + 0xc0]
cmp eax, 0xff
jb 0x517cb2
add eax, 0xffffff01
mov byte [esi], 0xff
add esi, 1
mov byte [esi], al
add esi, 1
jmp 0x517cbd
add al, cl
mov byte [edx], al
mov eax, dword [esp + 0x60]
add eax, ebp
mov ebx, edi
mov dword [esp + 4], eax
sub ebx, eax
mov eax, ebx
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0xa8], 0
je 0x517cf6
shr edx, 7
add edx, esi
lea eax, [ebx + edx]
add eax, 9
cmp eax, dword [esp + 0xc8]
ja 0x51bdc2
lea ebp, [esi + 1]
cmp ebx, 0xf
mov dword [esp], esi
jb 0x517d4f
lea eax, [ebx - 0xf]
mov byte [esi], 0xf0
cmp eax, 0xff
jb 0x517d58
lea eax, [ebx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
lea ebp, [esi + edi]
add ebp, 2
sub edi, eax
mov ecx, ebx
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov edi, dword [esp + 0x68]
jmp 0x517d5a
mov eax, ebx
shl al, 4
mov byte [esi], al
jmp 0x517d62
mov ecx, ebx
mov byte [ebp], al
add ebp, 1
mov ebx, ecx
add ebx, ebp
mov dword [esp + 0x50], ebx
lea ebx, [edi + ebp]
mov edx, dword [esp + 4]
sub ebx, edx
lea esi, [ebp + 8]
cmp ebx, esi
mov ecx, esi
cmova ecx, ebx
mov eax, ebp
not eax
add ecx, eax
mov edi, ebp
mov dword [esp + 8], ecx
cmp ecx, 0x18
jb 0x517e63
cmp ebx, esi
cmova esi, ebx
add esi, eax
and esi, 0xfffffff8
mov edx, dword [esp + 0xc0]
add edx, esi
mov eax, dword [esp + 0x60]
add eax, edx
add eax, 8
cmp ebp, eax
jae 0x517dc6
lea eax, [esi + ebp]
add eax, 8
mov ecx, dword [esp + 4]
mov edx, ecx
mov edi, ebp
cmp ecx, eax
jb 0x517e63
mov eax, dword [esp + 8]
shr eax, 3
add eax, 1
mov dword [esp + 8], eax
mov esi, eax
and esi, 0xfffffffc
lea eax, [esi - 4]
mov ecx, eax
shr ecx, 2
add ecx, 1
test eax, eax
je 0x517e2b
mov edx, ecx
and edx, 0xfffffffe
mov eax, dword [esp + 4]
lea ebx, [eax + 0x30]
xor edi, edi
mov eax, dword [esp + 0x50]
movups xmm0, xmmword [ebx + edi*8 - 0x30]
movups xmm1, xmmword [ebx + edi*8 - 0x20]
movups xmmword [ebp + edi*8], xmm0
movups xmmword [ebp + edi*8 + 0x10], xmm1
movups xmm0, xmmword [ebx + edi*8 - 0x10]
movups xmm1, xmmword [ebx + edi*8]
movups xmmword [ebp + edi*8 + 0x20], xmm0
movups xmmword [ebp + edi*8 + 0x30], xmm1
add edi, 8
add edx, 0xfffffffe
jne 0x517dfa
jmp 0x517e31
xor edi, edi
mov eax, dword [esp + 0x50]
test cl, 1
je 0x517e4d
mov ecx, dword [esp + 4]
movups xmm0, xmmword [ecx + edi*8]
movups xmm1, xmmword [ecx + edi*8 + 0x10]
movups xmmword [ebp + edi*8], xmm0
movups xmmword [ebp + edi*8 + 0x10], xmm1
cmp dword [esp + 8], esi
je 0x517e79
mov eax, dword [esp + 4]
lea edx, [eax + esi*8]
lea edi, [esi*8]
add edi, ebp
mov eax, dword [esp + 0x50]
movsd xmm0, qword [edx]
movsd qword [edi], xmm0
add edi, 8
add edx, 8
cmp edi, eax
jb 0x517e67
mov edi, dword [esp + 0x68]
mov ebx, eax
mov eax, edi
sub eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x8c]
add ecx, 0xfffffffc
mov word [ebx], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0xa8], 0
mov esi, dword [esp]
je 0x517ec1
shr edx, 7
lea eax, [ebx + edx]
add eax, 8
cmp eax, dword [esp + 0xc8]
ja 0x51bdc2
add ebx, 2
mov dword [esp + 0x50], ebx
mov al, byte [esi]
cmp ecx, 0xf
jb 0x517f66
add al, 0xf
mov byte [esi], al
mov esi, dword [esp + 0x8c]
lea eax, [esi - 0x13]
cmp eax, 0x1fe
jb 0x517f33
lea eax, [esi - 0x211]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push dword [esp + 0x58]
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x68]
lea eax, [eax + edi*2]
sub eax, dword [esp + 4]
add eax, ebp
add eax, 4
mov dword [esp + 0x50], eax
imul eax, edi, 0xfffffe02
add eax, esi
add eax, 0xfffffdef
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x74]
cmp eax, 0xff
jb 0x517f57
add eax, 0xffffff01
mov ecx, dword [esp + 0x50]
mov byte [ecx], 0xff
add ecx, 1
jmp 0x517f5b
mov ecx, dword [esp + 0x50]
mov byte [ecx], al
add ecx, 1
mov dword [esp + 0x50], ecx
jmp 0x517f76
add al, cl
mov byte [esi], al
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x74]
cmp ebx, dword [esp + 0x118]
ja 0x51c1b8
mov eax, dword [edi + 0x40004]
jmp 0x514228
mov dword [esp + 0xdc], ebp
mov al, byte [edx + 0x4001a]
mov byte [esp + 0x6c], al
neg al
sbb eax, eax
mov dword [esp + 0x118], eax
push 0x10030
call fcn.004f5d40
add esp, 4
xor ebx, ebx
mov dword [esp + 0x5c], eax
test eax, eax
je 0x51bd0e
mov eax, dword [esi*4 + 0x687788]
mov esi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xdc]
lea ecx, [esi + ebp]
add ecx, 0xfffffff4
mov dword [esp + 0xd8], ecx
xor ecx, ecx
cmp dword [esp + 0xa8], 2
setne cl
mov edx, dword [esp + 0x120]
add edi, edx
mov ebx, dword [esp + 0x11c]
mov dword [ebx], 0
lea ecx, [ecx + ecx*4]
add ecx, edi
add ecx, 0xfffffffb
mov dword [esp + 0xcc], ecx
mov ecx, edx
cmp eax, 0xfff
mov edx, 0xfff
cmovb edx, eax
mov dword [esp + 0x114], edx
mov edx, esi
mov edi, ecx
cmp dword [esp + 0xd8], esi
jb 0x51bbfd
lea eax, [esi + ebp]
add eax, 0xfffffffb
lea edx, [eax - 3]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x34], eax
lea eax, [eax - 1]
mov dword [esp + 0x10c], eax
lea eax, [ebp + esi - 5]
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0x5c]
lea edx, [eax + 0x4c]
mov dword [esp + 0x128], edx
add eax, 0x50
mov dword [esp + 0x124], eax
mov ebx, 0xffff
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x2c], esi
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0x4000c]
mov eax, dword [esp + 0x58]
mov ebp, eax
sub ebp, esi
mov esi, dword [edx + 0x40010]
lea edx, [esi + 0x10000]
lea edi, [ebp - 0xffff]
mov dword [esp + 0x50], edx
cmp edx, ebp
mov dword [esp + 0xd0], esi
cmova edi, esi
mov dword [esp + 0xc], edi
mov dword [esp + 0x40], ecx
mov edi, dword [esp + 0x2c]
add ecx, edi
mov dword [esp + 0x78], ecx
mov eax, dword [eax]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x40014]
cmp eax, ebp
mov dword [esp + 0x4c], ebp
jae 0x5181d8
mov esi, dword [esp + 0x58]
mov edx, esi
sub edx, eax
sub edx, edi
mov ecx, eax
not ecx
add ecx, esi
test dl, 1
mov ebp, edi
je 0x51814b
imul edx, dword [ebp + eax], 0x9e3779b1
shr edx, 0x11
mov esi, eax
mov edi, dword [esp + 0x18]
sub esi, dword [edi + edx*4]
cmp esi, 0xffff
cmovae esi, ebx
movzx edi, ax
mov ebx, dword [esp + 0x18]
mov word [ebx + edi*2 + 0x20000], si
mov ebx, 0xffff
mov esi, dword [esp + 0x18]
mov dword [esi + edx*4], eax
add eax, 1
cmp ecx, ebp
mov edi, ebp
mov ebp, dword [esp + 0x4c]
je 0x5181d8
add eax, 1
nop dword [eax]
lea ecx, [eax - 1]
imul edx, dword [edi + eax - 1], 0x9e3779b1
shr edx, 0x11
mov esi, dword [esp + 0x18]
mov esi, dword [esi + edx*4]
not esi
add esi, eax
cmp esi, 0xffff
cmovae esi, ebx
mov ebp, edi
movzx edi, cx
mov ebx, dword [esp + 0x18]
mov word [ebx + edi*2 + 0x20000], si
mov ebx, 0xffff
mov edi, dword [esp + 0x18]
mov dword [edi + edx*4], ecx
imul ecx, dword [ebp + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [edi + ecx*4]
cmp edx, 0xffff
cmovae edx, ebx
movzx esi, ax
mov word [edi + esi*2 + 0x20000], dx
mov dword [edi + ecx*4], eax
mov edi, ebp
mov ebp, dword [esp + 0x4c]
lea ecx, [eax + 2]
add eax, 1
cmp eax, ebp
mov eax, ecx
jb 0x518160
mov edi, dword [esp + 0x58]
mov eax, edi
sub eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x4001c]
mov dword [esp + 0xac], eax
mov ebx, dword [ecx + 0x40008]
mov dword [ecx + 0x40014], ebp
imul ebp, dword [edi], 0x9e3779b1
shr ebp, 0x11
mov edx, dword [esp + 8]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
mov dword [esp + 0xb4], edx
xor eax, edx
or eax, ecx
sete byte [esp + 0x84]
mov eax, edi
neg eax
mov dword [esp + 0x94], eax
mov eax, 0xfffffffc
sub eax, edi
mov dword [esp + 0xa0], eax
mov ecx, dword [esp + 0xd0]
mov esi, ecx
mov eax, dword [esp + 0x40]
sub esi, eax
mov dword [esp + 0x98], esi
mov dword [esp + 0x68], ebp
mov edx, dword [esp + 0x18]
mov ebp, dword [edx + ebp*4]
lea edx, [edi + 4]
mov dword [esp + 0x20], edx
lea edx, [edi + 8]
mov dword [esp + 0x80], edx
lea esi, [eax - 4]
mov dword [esp + 0xb8], esi
lea esi, [ebx + ecx]
mov dword [esp + 0xa4], esi
mov esi, dword [esp + 0x78]
lea esi, [esi + 4]
mov dword [esp + 0x104], esi
lea esi, [ebx + eax]
mov dword [esp + 0x54], esi
mov esi, ebp
lea ecx, [ebx + ecx + 4]
mov dword [esp + 0x70], ecx
lea ecx, [eax + edi]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], ebx
lea eax, [ebx + eax - 1]
mov dword [esp + 0xc0], eax
mov edi, 3
mov dword [esp + 0x28], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0x3c], 0
xor eax, eax
mov ecx, dword [esp + 0x100]
jmp 0x518322
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10]
add eax, esi
movzx eax, ax
mov edx, dword [esp + 0x18]
movzx eax, word [edx + eax*2 + 0x20000]
sub esi, eax
mov eax, dword [esp + 0x10]
xor edx, edx
cmp edx, 3
je 0x518dcb
cmp esi, dword [esp + 0xc]
jb 0x518dcb
test ecx, ecx
jle 0x518dcb
mov dword [esp + 0x10], eax
xor edx, edx
cmp byte [esp + 0x6c], 0
mov ebx, dword [esp + 0x4c]
je 0x518357
mov edx, ebx
sub edx, esi
cmp edx, 8
mov edx, 0
jb 0x5186c0
mov ebp, dword [esp + 0x40]
sub ebp, esi
jbe 0x5183e0
cmp esi, dword [esp + 0xb8]
ja 0x5186c0
mov dword [esp + 0x14], ecx
mov ecx, edi
mov edx, dword [esp + 0x90]
lea edi, [edx + esi]
mov edx, dword [esp + 8]
cmp dword [edi], edx
jne 0x518447
add ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x34]
cmp ebp, eax
mov edx, ebp
cmova edx, eax
add edi, 4
mov dword [esp], edx
lea eax, [edx - 3]
mov edx, dword [esp + 0x20]
cmp eax, edx
jbe 0x518467
mov edx, dword [edx]
xor edx, dword [edi]
je 0x51845d
bsf edx, edx
shr edx, 3
mov edi, ecx
mov eax, dword [esp + 0x34]
lea ebx, [edx + 4]
mov dword [esp + 0x48], ebx
cmp ebp, eax
jb 0x5184e1
jmp 0x518696
mov eax, dword [esp + 0x2c]
lea ebp, [eax + esi]
mov eax, dword [esp + 0x58]
movzx edx, word [eax + edi - 1]
cmp dx, word [edi + ebp - 1]
jne 0x51843c
mov eax, dword [esp + 8]
cmp dword [ebp], eax
mov edx, 0
jne 0x518454
lea edx, [ebp + 4]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
cmp ebx, eax
jbe 0x518d90
mov eax, dword [eax]
xor eax, dword [edx]
je 0x518527
bsf edx, eax
shr edx, 3
mov ebx, dword [esp + 0x4c]
add edx, 4
cmp edx, edi
jg 0x5186b1
jmp 0x5186c0
mov ebx, dword [esp + 0x4c]
xor edx, edx
jmp 0x5186c0
mov edi, ecx
mov ecx, dword [esp + 0x14]
xor edx, edx
jmp 0x5186c0
mov ebx, dword [esp + 0x4c]
jmp 0x5186c0
add edi, 4
mov edx, dword [esp + 0x80]
mov dword [esp + 4], esi
cmp edx, eax
jae 0x518493
mov esi, dword [esp + 0xa0]
add esi, edx
nop dword [eax + eax]
mov ebx, dword [edx]
xor ebx, dword [edi]
jne 0x5184c0
add edx, 4
add edi, 4
add esi, 4
cmp edx, eax
jb 0x518480
mov eax, dword [esp]
add eax, 0xffffffff
cmp edx, eax
jae 0x518665
movzx eax, word [edi]
cmp ax, word [edx]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 4]
jne 0x51866d
add edx, 2
add edi, 2
jmp 0x51866d
bsf edx, ebx
shr edx, 3
add edx, esi
mov eax, dword [esp + 0x34]
mov edi, ecx
mov esi, dword [esp + 4]
lea ebx, [edx + 4]
mov dword [esp + 0x48], ebx
cmp ebp, eax
jae 0x518696
mov eax, dword [esp + 0x58]
add edx, eax
add edx, 4
mov eax, dword [esp]
cmp edx, eax
jne 0x518696
mov ebp, dword [esp + 0x78]
mov edi, ebp
mov edx, eax
cmp dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x4c]
jbe 0x51859d
mov edx, dword [eax]
xor edx, dword [ebp]
je 0x518593
bsf edx, edx
shr edx, 3
mov edi, ecx
mov ecx, dword [esp + 0x14]
jmp 0x518657
mov dword [esp + 0x14], ecx
add edx, 4
mov eax, dword [esp + 0x80]
mov dword [esp + 4], esi
mov ecx, edi
cmp eax, ebx
mov ebx, dword [esp + 0x4c]
jae 0x518569
mov esi, dword [esp + 0xa0]
lea edi, [esi + eax]
nop dword [eax]
mov esi, dword [eax]
xor esi, dword [edx]
jne 0x51862a
add eax, 4
add edx, 4
add edi, 4
cmp eax, dword [esp + 0x1c]
jb 0x518550
cmp eax, dword [esp + 0x10c]
jae 0x518d3d
movzx esi, word [edx]
cmp si, word [eax]
mov edi, ecx
jne 0x518d45
add eax, 2
mov dword [esp + 0x48], eax
add edx, 2
jmp 0x518d49
lea edx, [eax + 4]
mov edi, dword [esp + 0x104]
mov dword [esp + 4], esi
cmp edx, dword [esp + 0x1c]
jae 0x518d99
mov esi, dword [esp + 0x8c]
sub esi, dword [esp + 4]
mov eax, dword [esp + 0x110]
cmp esi, eax
cmovae esi, eax
mov ebp, edx
sub ebp, esi
mov ebx, dword [esp + 0x4c]
nop word [eax + eax]
mov esi, dword [edx]
xor esi, dword [edi]
jne 0x518645
add edx, 4
add edi, 4
add ebp, 4
cmp edx, dword [esp + 0x1c]
jb 0x5185d0
cmp edx, dword [esp + 0x10c]
jae 0x5185fc
movzx esi, word [edi]
cmp si, word [edx]
jne 0x5185fc
add edx, 2
add edi, 2
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 4]
cmp edx, ebp
jae 0x51861e
mov al, byte [edi]
mov byte [esp + 4], al
mov al, byte [esp + 4]
cmp al, byte [edx]
mov eax, 0
sete al
add edx, eax
mov edi, ecx
mov eax, dword [esp]
sub edx, eax
jmp 0x51851e
bsf edx, esi
shr edx, 3
add edx, edi
mov edi, ecx
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 4]
add edx, 4
cmp edx, edi
jg 0x5186b1
jmp 0x5186c0
bsf edx, esi
shr edx, 3
add edx, ebp
mov edi, ecx
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 4]
mov eax, dword [esp + 0x48]
add eax, edx
mov edx, eax
cmp edx, edi
jg 0x5186a6
jmp 0x5186c0
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 4]
cmp edx, dword [esp]
jae 0x518681
mov al, byte [edi]
xor ebx, ebx
cmp al, byte [edx]
mov eax, dword [esp + 0x34]
sete bl
add edx, ebx
mov edi, ecx
sub edx, dword [esp + 0x20]
lea ebx, [edx + 4]
mov dword [esp + 0x48], ebx
cmp ebp, eax
jb 0x5184e1
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x48]
cmp edx, edi
jle 0x5186c0
mov eax, edx
mov edx, dword [esp + 0x2c]
lea ebp, [edx + esi]
mov edx, eax
mov dword [esp + 0x28], ebp
mov edi, edx
nop word [eax + eax]
add ecx, 0xffffffff
cmp edx, edi
jne 0x5187a0
mov dword [esp + 0x48], edx
lea edx, [edi + esi]
cmp edx, ebx
ja 0x5187c0
mov eax, dword [esp + 0x48]
cmp eax, 4
mov ebx, dword [esp + 0x1c]
jl 0x5187c4
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], edi
add eax, 0xfffffffd
mov dword [esp], eax
xor ebp, ebp
mov dword [esp + 4], esi
mov esi, 0x10
mov ecx, dword [esp + 0x18]
mov edi, 1
mov edx, dword [esp + 0x10]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [esp + 4]
lea ebx, [eax + ebp]
movzx ebx, bx
movzx eax, word [ecx + ebx*2 + 0x20000]
lea ebx, [esi + 1]
sar esi, 4
cmp edi, eax
cmovb edi, eax
mov eax, 0x10
cmovb ebx, eax
cmovb edx, ebp
add ebp, esi
mov esi, ebx
cmp ebp, dword [esp]
jl 0x518720
mov dword [esp + 0x10], edx
xor edx, edx
mov esi, dword [esp + 4]
cmp esi, edi
setb bl
mov eax, edi
mov ecx, 0
cmovb eax, ecx
cmp edi, 2
cmovb eax, ecx
sub esi, eax
cmp edi, 1
jbe 0x518946
mov dl, bl
or edx, 2
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
jmp 0x518319
mov ebx, dword [esp + 0x1c]
movzx eax, si
mov edx, dword [esp + 0x18]
cmp word [edx + eax*2 + 0x20000], 1
je 0x5187da
jmp 0x5182fc
mov ebx, dword [esp + 0x1c]
movzx eax, si
mov edx, dword [esp + 0x18]
cmp word [edx + eax*2 + 0x20000], 1
jne 0x5182fc
cmp dword [esp + 0x10], 0
jne 0x5182fc
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x5188d6
cmp eax, 2
jne 0x5182f8
lea edx, [esi - 1]
cmp edx, dword [esp + 0xc]
jb 0x5182f8
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x40]
mov eax, edx
sub eax, esi
mov dword [esp + 0x3c], 2
cmp eax, 3
jb 0x5182fc
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x44]
cmp edi, edx
mov ebp, dword [esp + 0x2c]
cmovb ebp, dword [esp + 0x90]
mov eax, dword [esp + 8]
cmp dword [ebp + edi], eax
jne 0x51899a
mov dword [esp + 4], esi
mov dword [esp + 0x14], ecx
cmp edi, edx
mov ecx, dword [esp + 0x34]
cmovb ecx, dword [esp + 0x54]
mov edx, ebp
mov dword [esp + 0x3c], ebp
lea eax, [ebp + edi]
mov dword [esp], eax
lea edx, [eax + 4]
lea esi, [ecx - 3]
mov ebp, edx
cmp esi, edx
jbe 0x5188a7
mov eax, dword [esp + 4]
mov edi, dword [esp + 0x3c]
add eax, edi
add eax, 3
mov ebp, edx
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [ebp]
xor edi, dword [esp + 8]
jne 0x5189a3
add ebp, 4
add eax, 4
cmp ebp, esi
jb 0x518890
cmp ebp, ecx
mov edi, dword [esp + 0x40]
jae 0x5189af
mov esi, ecx
sub esi, ebp
mov eax, dword [esp + 8]
cmp byte [ebp], al
jne 0x5189af
add ebp, 1
shr eax, 8
add esi, 0xffffffff
jne 0x5188bb
mov ebp, ecx
jmp 0x5189af
mov dword [esp + 0x3c], 1
cmp byte [esp + 0x84], 0
je 0x5182fc
mov dword [esp + 4], esi
mov eax, dword [esp + 0x20]
mov esi, eax
cmp ebx, eax
jbe 0x518912
nop word [eax + eax]
mov edx, dword [eax]
xor edx, dword [esp + 8]
jne 0x51896d
add eax, 4
add esi, 4
cmp eax, ebx
jb 0x518900
mov edx, dword [esp + 0x34]
cmp eax, edx
jae 0x518975
mov dword [esp + 0x14], ecx
mov ecx, edi
mov edi, edx
sub edi, esi
lea esi, [eax + edi]
mov edx, dword [esp + 8]
cmp byte [eax], dl
jne 0x51893c
add eax, 1
shr edx, 8
add edi, 0xffffffff
jne 0x51892b
mov eax, esi
mov esi, eax
mov edi, ecx
mov ecx, dword [esp + 0x14]
jmp 0x518975
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
movzx eax, si
mov edx, dword [esp + 0x18]
cmp word [edx + eax*2 + 0x20000], 1
je 0x5187da
jmp 0x5182fc
bsf eax, edx
shr eax, 3
add esi, eax
add esi, dword [esp + 0x94]
mov dword [esp + 0xbc], esi
mov eax, 2
mov esi, dword [esp + 4]
cmp eax, 2
je 0x5187fa
jmp 0x5182f8
mov edi, dword [esp + 0x24]
jmp 0x5182fc
bsf ebp, edi
shr ebp, 3
add ebp, eax
mov edi, dword [esp + 0x40]
sub ebp, edx
add ebp, 4
cmp dword [esp + 0x44], edi
mov esi, dword [esp + 0x34]
jae 0x5189db
mov eax, dword [esp]
add eax, ebp
cmp eax, ecx
je 0x518c7c
mov dword [esp + 0x9c], ebp
mov eax, dword [esp + 0xa4]
jmp 0x5189e6
mov dword [esp + 0x9c], ebp
mov eax, dword [esp + 0x78]
mov dword [esp + 0xec], eax
mov esi, eax
mov ecx, dword [esp + 4]
mov edx, dword [esp]
mov eax, dword [esp + 8]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x48], esi
lea eax, [esi + 4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
lea ebp, [eax + ecx]
xor ebx, ebx
mov edi, edx
nop word [eax + eax]
mov edx, ebx
mov esi, edi
mov eax, dword [esp]
add eax, ebx
cmp eax, dword [esp + 0x10]
jb 0x518a3f
lea ebx, [edx - 4]
lea edi, [esi - 4]
mov ecx, dword [esp + 8]
cmp dword [ebp + edx - 5], ecx
je 0x518a20
lea edi, [edx + ebp]
add edi, 0xffffffff
cmp eax, dword [esp + 0x48]
jbe 0x518a9c
mov ecx, dword [esp + 0xb4]
cmp byte [edx + ebp - 2], cl
jne 0x518a9c
mov ecx, dword [esp + 0xec]
sub ecx, dword [esp + 4]
sub ecx, dword [esp + 0x3c]
sub ecx, edx
add eax, ecx
add eax, 1
lea ecx, [esp + 0xb2]
nop word cs:[eax + eax]
nop
lea edi, [esi - 1]
cmp edi, dword [esp + 0x48]
jbe 0x518d36
movzx edx, byte [esi - 2]
lea ebx, [ecx - 1]
mov esi, edi
cmp dl, byte [ecx]
mov ecx, ebx
je 0x518a80
mov eax, dword [esp]
mov esi, eax
sub esi, edi
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], esi
jae 0x518ac5
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0xbc]
jmp 0x518bbf
sub eax, esi
cmp eax, dword [esp + 0x78]
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0xbc]
jne 0x518bbf
mov eax, dword [esp + 0xd0]
cmp eax, dword [esp + 0x40]
jae 0x518bbf
mov ecx, dword [esp + 0x10]
neg ecx
shl ecx, 3
mov eax, dword [esp + 8]
rol eax, cl
mov dword [esp + 0xb0], eax
mov dword [esp], eax
shr eax, 0x18
mov dword [esp + 0x48], eax
mov edi, dword [esp + 0x98]
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0xc0]
nop
mov ecx, ebx
mov eax, esi
mov edx, edi
lea esi, [ebx + 1]
mov dword [esp + 4], esi
cmp esi, dword [esp + 0x70]
jb 0x518b44
lea ebx, [ecx - 4]
lea esi, [eax - 4]
lea edi, [edx + 4]
mov ebp, dword [esp]
cmp dword [ecx - 3], ebp
je 0x518b20
mov esi, dword [esp + 4]
cmp esi, dword [esp + 0xa4]
jbe 0x518daf
mov ebx, dword [esp + 0x48]
cmp byte [ecx], bl
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0xbc]
jne 0x518ba9
add dword [esp + 4], edx
lea esi, [esp + 0xb2]
nop word cs:[eax + eax]
nop dword [eax]
cmp ecx, dword [esp + 0xa4]
jbe 0x518d87
movzx eax, byte [ecx - 1]
add ecx, 0xffffffff
lea edx, [esi - 1]
cmp al, byte [esi]
mov esi, edx
je 0x518b80
add ecx, 1
mov eax, ecx
mov esi, dword [esp + 0xbc]
mov ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x54]
sub ecx, eax
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x44]
mov eax, edx
sub edx, dword [esp + 0x10]
mov ebp, dword [esp + 0xc]
cmp edx, ebp
cmovbe edx, ebp
mov dword [esp + 4], edx
sub eax, edx
mov edx, dword [esp + 0x9c]
add eax, edx
cmp edx, esi
ja 0x518c18
cmp eax, esi
jb 0x518c18
mov eax, dword [esp + 0x44]
sub eax, esi
mov esi, dword [esp + 0x9c]
add esi, eax
mov eax, esi
not eax
mov edx, dword [esp + 0x40]
add eax, edx
cmp eax, 3
cmovb esi, edx
xor eax, eax
mov edx, 2
mov dword [esp + 0x3c], 2
jmp 0x518319
mov esi, dword [esp + 4]
not esi
mov ebp, dword [esp + 0x40]
add esi, ebp
mov edx, 2
cmp esi, 3
jae 0x518c3f
mov dword [esp + 0x3c], 2
mov esi, ebp
xor eax, eax
jmp 0x518319
mov esi, dword [esp + 0xbc]
cmp eax, esi
cmovae eax, esi
cmp edi, eax
jae 0x518d03
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 4]
sub esi, ebp
cmp esi, 0xffff
ja 0x518dcb
mov esi, dword [esp + 0x2c]
add esi, ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], eax
jmp 0x518d07
lea ecx, [ebp*8]
mov edx, dword [esp + 8]
rol edx, cl
mov eax, dword [esp + 0x78]
mov edi, eax
mov ecx, eax
cmp ebx, eax
jbe 0x518db8
nop dword [eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x518cd0
add ecx, 4
add edi, 4
cmp ecx, ebx
jb 0x518ca0
cmp ecx, esi
jae 0x518cd8
mov eax, esi
sub eax, edi
lea esi, [ecx + eax]
cmp byte [ecx], dl
jne 0x518ccc
add ecx, 1
shr edx, 8
add eax, 0xffffffff
jne 0x518cbb
mov ecx, esi
mov edi, ecx
jmp 0x518cd8
bsf eax, eax
shr eax, 3
add edi, eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 4]
mov edx, dword [esp]
sub ebp, eax
add ebp, edi
mov dword [esp + 0x9c], ebp
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xec], eax
mov esi, eax
jmp 0x5189f6
mov ebp, dword [esp + 4]
movzx eax, bp
mov edi, dword [esp + 0x18]
movzx eax, word [edi + eax*2 + 0x20000]
mov dword [esp + 0x3c], 2
sub ebp, eax
mov edi, dword [esp + 0x24]
mov esi, ebp
mov eax, 0
jae 0x518319
jmp 0x518dcb
mov edi, eax
jmp 0x518a9c
mov dword [esp + 0x48], eax
mov edi, ecx
jmp 0x518d49
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 4]
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x34]
jae 0x518d71
mov dl, byte [edx]
mov byte [esp + 4], dl
mov dl, byte [esp + 4]
cmp dl, byte [eax]
mov edx, 0
sete dl
add eax, edx
mov edx, eax
sub edx, dword [esp + 0x20]
add edx, 4
cmp edx, edi
jg 0x5186b1
jmp 0x5186c0
mov eax, dword [esp + 4]
jmp 0x518ba2
mov dword [esp + 0x14], ecx
jmp 0x518535
mov ebx, dword [esp + 0x4c]
cmp edx, dword [esp + 0x10c]
jb 0x5185ee
jmp 0x5185fc
mov edi, dword [esp + 0x24]
jmp 0x518ba2
mov ecx, dword [esp + 0x78]
mov edi, ecx
cmp ecx, esi
jb 0x518cb4
jmp 0x518cd8
test ecx, ecx
jle 0x518f75
mov ebp, dword [esp + 0x4c]
mov eax, ebp
sub eax, dword [esp + 0xc]
cmp eax, 0xfffe
ja 0x518f75
mov eax, dword [esp + 0xac]
mov ebx, dword [eax + 0x40000]
mov esi, dword [eax + 0x40004]
mov dword [esp + 4], esi
sub ebx, esi
mov esi, dword [esp + 0x68]
mov esi, dword [eax + esi*4]
mov edx, dword [esp + 0xc]
add edx, esi
mov dword [esp], ebx
sub edx, ebx
mov eax, ebp
sub eax, edx
cmp eax, 0xffff
mov ebx, dword [esp + 0x5c]
ja 0x51905b
mov ebp, edx
mov edx, dword [esp + 0x38]
jmp 0x518e91
bsf edx, eax
shr edx, 3
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0xc]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
add edx, 4
lea eax, [edi + ebp]
cmp edx, ecx
mov edi, dword [esp + 0x28]
cmovg edi, eax
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x24]
cmovg edi, edx
mov ecx, dword [esp + 0x14]
movzx eax, si
mov edx, dword [esp + 0xac]
movzx eax, word [edx + eax*2 + 0x20000]
sub esi, eax
mov edx, ebp
sub edx, eax
mov eax, dword [esp + 0x4c]
mov ebp, edx
sub eax, edx
cmp eax, 0x10000
mov edx, dword [esp + 0x38]
jae 0x518f7d
sub ecx, 1
jb 0x518f7d
mov eax, dword [esp + 8]
mov edx, dword [esp + 4]
cmp dword [edx + esi], eax
jne 0x518e62
mov dword [esp + 0x24], edi
mov dword [esp + 0xc], ebp
mov edi, dword [esp]
sub edi, esi
add edi, dword [esp + 0x58]
mov eax, dword [esp + 0x34]
cmp edi, eax
cmova edi, eax
lea ebx, [edx + esi]
add ebx, 4
lea ebp, [edi - 3]
mov edx, dword [esp + 0x20]
cmp ebp, edx
mov dword [esp + 0x14], ecx
jbe 0x518eea
mov eax, dword [edx]
xor eax, dword [ebx]
jne 0x518e2e
add ebx, 4
mov edx, dword [esp + 0x80]
cmp edx, ebp
jae 0x518f13
mov eax, dword [esp + 0xa0]
add eax, edx
nop word [eax + eax]
mov ecx, dword [edx]
xor ecx, dword [ebx]
jne 0x518f2e
add edx, 4
add ebx, 4
add eax, 4
cmp edx, ebp
jb 0x518f00
lea eax, [edi - 1]
cmp edx, eax
jae 0x518f4b
movzx eax, word [ebx]
cmp ax, word [edx]
mov ebp, dword [esp + 0xc]
jne 0x518f4f
add edx, 2
add ebx, 2
jmp 0x518f4f
bsf edx, ecx
shr edx, 3
add edx, eax
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0xc]
mov ecx, dword [esp + 0x24]
jmp 0x518e44
mov ebp, dword [esp + 0xc]
cmp edx, edi
jae 0x518f5e
mov al, byte [ebx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
sub edx, eax
jmp 0x518e44
mov ebx, dword [esp + 0x5c]
mov edx, dword [esp + 0x38]
cmp edi, 4
jl 0x519068
lea eax, [edi - 0x13]
cmp eax, 0x12
mov ecx, edi
mov eax, 0x12
cmovb ecx, eax
cmp byte [esp + 0x6c], 0
cmove ecx, edi
mov eax, dword [esp + 0x58]
sub eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov dword [esp + 0x3c], ecx
cmp dword [esp + 0x114], ecx
jae 0x519072
mov edi, dword [esp + 0x30]
mov eax, edi
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0xa8], 0
mov esi, dword [esp + 0xc4]
mov ebp, dword [esp + 0x7c]
je 0x518ff5
shr edx, 7
add edx, ebp
lea eax, [edi + edx]
add eax, 9
cmp eax, dword [esp + 0xcc]
ja 0x51ba02
lea ebx, [ebp + 1]
cmp edi, 0xf
mov edx, edi
jb 0x519160
lea eax, [edx - 0xf]
mov byte [ebp], 0xf0
cmp eax, 0xff
jb 0x519051
mov esi, dword [esp + 0x58]
sub esi, dword [esp + 0x38]
lea eax, [esi - 0x10e]
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ebx
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov eax, edi
shl eax, 8
lea ebx, [edi + ebp]
add ebx, 2
sub edi, eax
lea eax, [esi + edi]
add eax, 0xfffffef2
mov byte [ebx], al
add ebx, 1
jmp 0x519168
mov edx, dword [esp + 0x38]
cmp edi, 4
jge 0x518f86
add dword [esp + 0x58], 1
jmp 0x51b9c6
mov edx, dword [esp + 0x30]
cmp edx, 0xe
mov esi, 0x80808081
jle 0x51909e
lea eax, [edx - 0xf]
mul esi
shr edx, 7
mov eax, dword [esp + 0x30]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x30]
add eax, edx
add eax, 1
mov edx, dword [esp + 0x30]
jmp 0x5190a3
lea ecx, [edx + 1]
mov eax, edx
mov dword [ebx + 8], 1
mov dword [ebx + 4], 0
mov dword [ebx + 0xc], edx
mov dword [ebx], eax
mov eax, ecx
cmp ecx, 0xf
jl 0x5190cb
lea eax, [ecx - 0xf]
mul esi
shr edx, 7
lea eax, [ecx + edx]
add eax, 1
mov edx, 0x80808081
mov dword [ebx + 0x18], 1
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x1c], ecx
mov dword [ebx + 0x10], eax
mov ebp, dword [esp + 0x30]
lea edi, [ebp + 2]
cmp ebp, 0xd
jl 0x519119
lea eax, [ebp - 0xd]
mul edx
shr edx, 7
lea esi, [ebp + 3]
lea eax, [edx + ebp]
add eax, 3
mov dword [ebx + 0x28], 1
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x2c], edi
mov dword [ebx + 0x20], eax
mov edx, ebp
jmp 0x51913d
mov dword [ebx + 0x28], 1
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x2c], edi
mov dword [ebx + 0x20], edi
mov esi, 0xf
cmp ebp, 0xc
mov edx, ebp
jne 0x519235
mov dword [esp], esi
lea eax, [edx - 0xc]
mov ebp, 0x80808081
mul ebp
shr edx, 7
mov eax, dword [esp + 0x30]
lea edi, [eax + edx]
add edi, 4
mov edx, dword [esp + 0x30]
jmp 0x519240
mov eax, edx
shl al, 4
mov byte [ebp], al
mov eax, dword [esp + 0x58]
lea ebp, [ebx + eax]
mov ecx, dword [esp + 0x38]
sub ebp, ecx
mov eax, ebx
add ebx, 8
cmp ebp, ebx
mov edi, ebx
cmova edi, ebp
lea esi, [eax + edx]
mov edx, eax
not edx
mov dword [esp + 8], edx
add edi, edx
mov dword [esp + 0x38], ecx
mov edx, ecx
mov ecx, eax
mov dword [esp], edi
cmp edi, 0x18
mov edi, eax
jb 0x51b8ea
cmp ebp, ebx
cmova ebx, ebp
add ebx, dword [esp + 8]
and ebx, 0xfffffff8
mov eax, dword [esp + 0x38]
add eax, ebx
add eax, 8
cmp edi, eax
jae 0x5191d3
lea eax, [edi + ebx]
add eax, 8
mov ebx, dword [esp + 0x38]
mov edx, ebx
mov ecx, edi
cmp ebx, eax
jb 0x51b8ea
mov ebx, edi
mov ecx, dword [esp]
shr ecx, 3
add ecx, 1
mov dword [esp], ecx
and ecx, 0xfffffffc
lea eax, [ecx - 4]
mov edx, eax
shr edx, 2
add edx, 1
test eax, eax
je 0x51b8bc
mov ebp, edx
and ebp, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x38]
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [ebx + edi*8], xmm0
movups xmmword [ebx + edi*8 + 0x10], xmm1
movups xmm0, xmmword [eax + edi*8 + 0x20]
movups xmm1, xmmword [eax + edi*8 + 0x30]
movups xmmword [ebx + edi*8 + 0x20], xmm0
movups xmmword [ebx + edi*8 + 0x30], xmm1
add edi, 8
add ebp, 0xfffffffe
jne 0x519202
jmp 0x51b8c2
lea edi, [edx + 3]
mov dword [esp], edi
mov ebp, 0x80808081
lea eax, [edx - 0xf]
mov esi, edx
mul ebp
shr edx, 7
add ecx, edx
cmp esi, 0xf
mov dword [ebx + 0x38], 1
mov dword [ebx + 0x34], 0
mov eax, dword [esp]
mov dword [ebx + 0x3c], eax
mov dword [ebx + 0x30], edi
cmovl ecx, esi
lea esi, [ecx + 3]
add ecx, 4
mov edi, dword [esp + 0x3c]
neg edi
mov ebx, 4
mov ebp, dword [esp + 0x128]
jmp 0x5192b5
mov dword [ebp - 4], ebx
mov eax, dword [esp + 4]
mov dword [ebp - 8], eax
mov eax, dword [esp + 0x30]
mov dword [ebp], eax
mov dword [ebp - 0xc], edx
lea eax, [edi + ebx]
add eax, 1
add ebx, 1
add ebp, 0x10
cmp eax, 1
je 0x5192cd
mov edx, esi
cmp ebx, 0x13
jb 0x519290
lea eax, [ebx - 0x13]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ecx
jmp 0x519290
mov edi, dword [esp + 0x3c]
mov eax, edi
shl eax, 4
mov ebx, dword [esp + 0x5c]
mov dword [ebx + eax + 0x18], 1
mov dword [ebx + eax + 0x14], 0
mov dword [ebx + eax + 0x1c], 1
mov ecx, dword [ebx + eax]
lea edx, [ecx + 1]
mov dword [ebx + eax + 0x10], edx
mov dword [ebx + eax + 0x28], 1
mov dword [ebx + eax + 0x24], 0
mov dword [ebx + eax + 0x2c], 2
lea edx, [ecx + 2]
mov dword [ebx + eax + 0x20], edx
mov dword [ebx + eax + 0x38], 1
mov dword [ebx + eax + 0x34], 0
mov dword [ebx + eax + 0x3c], 3
add ecx, 3
mov dword [ebx + eax + 0x30], ecx
cmp edi, 1
jle 0x51b56f
mov eax, dword [esp + 0x58]
mov ebp, eax
mov esi, dword [esp + 0x2c]
sub ebp, esi
add ebp, 1
mov edx, 0xfffffffb
sub edx, eax
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x40]
add edx, eax
add edx, 1
mov dword [esp + 0xf8], edx
add eax, 5
mov dword [esp + 0x8c], eax
mov ecx, 1
mov dword [esp + 0xbc], 0
mov eax, dword [esp + 0x124]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x4c]
jmp 0x5193de
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x30]
add ebp, 1
add dword [esp + 0xbc], 1
add dword [esp + 0x68], 0xffffffff
add dword [esp + 0xf8], 1
add dword [esp + 0x8c], 1
add dword [esp + 0xd4], 0x10
mov ecx, dword [esp + 0xa0]
cmp edi, ecx
jle 0x51b56f
mov edx, dword [esp + 0x58]
add edx, ecx
mov dword [esp + 0x24], edx
cmp edx, dword [esp + 0xd8]
ja 0x51b56f
lea edx, [ecx + 1]
mov dword [esp + 0xa0], edx
mov esi, edx
shl esi, 4
mov dword [esp + 0x84], ecx
shl ecx, 4
mov dword [esp + 0x30], ebp
mov ebp, dword [ebx + esi]
mov dword [esp + 0xec], ecx
mov edx, dword [ebx + ecx]
cmp dword [esp + 0x108], 0xc
mov dword [esp + 0xe0], ebp
jae 0x51a108
cmp ebp, edx
mov ecx, dword [esp + 0x24]
jle 0x5193a3
mov dword [esp + 0xf4], esi
mov dword [esp + 0x80], edx
mov dword [esp + 0x3c], edi
mov edx, ecx
mov ebp, dword [esp + 0x2c]
sub edx, ebp
lea esi, [edx - 0xffff]
cmp dword [esp + 0x50], edx
cmova esi, dword [esp + 0xd0]
mov dword [esp + 0x44], esi
mov ecx, dword [ecx]
mov dword [esp + 8], ecx
mov dword [esp + 0x14], edx
cmp eax, edx
mov edx, dword [esp + 0x30]
jae 0x519564
mov ebx, edx
sub ebx, eax
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0xbc]
add ecx, edx
lea edx, [eax + ebp]
test bl, 1
je 0x5194da
imul esi, dword [ebp + eax], 0x9e3779b1
shr esi, 0x11
mov edi, eax
mov ebx, dword [esp + 0x18]
sub edi, dword [ebx + esi*4]
cmp edi, 0xffff
mov ebx, 0xffff
cmovae edi, ebx
movzx ebx, ax
mov ebp, dword [esp + 0x18]
mov word [ebp + ebx*2 + 0x20000], di
mov edi, dword [esp + 0x18]
mov dword [edi + esi*4], eax
add eax, 1
cmp ecx, edx
mov ebp, dword [esp + 0x2c]
mov ebx, 0xffff
je 0x519564
add eax, 1
nop
lea ecx, [eax - 1]
imul edx, dword [ebp + eax - 1], 0x9e3779b1
shr edx, 0x11
mov esi, dword [esp + 0x18]
mov esi, dword [esi + edx*4]
not esi
add esi, eax
cmp esi, 0xffff
cmovae esi, ebx
movzx edi, cx
mov ebx, dword [esp + 0x18]
mov word [ebx + edi*2 + 0x20000], si
mov ebx, 0xffff
mov edi, dword [esp + 0x18]
mov dword [edi + edx*4], ecx
imul ecx, dword [ebp + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [edi + ecx*4]
cmp edx, 0xffff
cmovae edx, ebx
movzx esi, ax
mov word [edi + esi*2 + 0x20000], dx
mov edx, dword [esp + 0x30]
mov dword [edi + ecx*4], eax
lea ecx, [eax + 2]
add eax, 1
cmp eax, edx
mov eax, ecx
jne 0x5194f0
mov esi, dword [esp + 0x3c]
sub esi, dword [esp + 0x84]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x40014], eax
mov edx, dword [esp + 0x24]
imul eax, dword [edx], 0x9e3779b1
shr eax, 0x11
mov dword [esp + 0x64], eax
mov eax, dword [ecx + eax*4]
mov dword [esp], eax
lea eax, [edx + 4]
mov dword [esp + 0x94], eax
mov ebx, dword [esp + 8]
movzx eax, bx
mov ecx, ebx
shr ecx, 0x10
xor ecx, eax
movzx eax, bl
shr ebx, 0x18
mov dword [esp + 0xfc], ebx
xor eax, ebx
or eax, ecx
mov ecx, edx
sete byte [esp + 0xe8]
mov eax, edx
neg eax
mov dword [esp + 0xc8], eax
lea eax, [edx + 8]
mov dword [esp + 0x60], eax
mov dword [esp + 0x9c], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x100]
mov dword [esp + 0x88], esi
mov ebp, esi
mov esi, eax
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x44]
jmp 0x51964a
mov edx, dword [esp]
mov eax, dword [esp + 0x48]
mov ebp, ebx
add eax, edx
movzx eax, ax
mov ebx, edx
mov edx, dword [esp + 0x18]
movzx eax, word [edx + eax*2 + 0x20000]
sub ebx, eax
mov dword [esp], ebx
xor ebx, ebx
cmp ebx, 3
mov ebx, ebp
mov ebp, dword [esp + 0x10]
je 0x51b030
mov edx, dword [esp]
cmp edx, edi
jb 0x51b030
test esi, esi
jle 0x51b030
mov dword [esp + 0x10], ebp
mov dword [esp + 0xc], 0
cmp byte [esp + 0x6c], 0
mov eax, dword [esp + 0x14]
je 0x519685
mov edx, eax
sub edx, dword [esp]
cmp edx, 8
mov edx, dword [esp]
jb 0x5199c0
mov ebp, dword [esp + 0x40]
sub ebp, edx
jbe 0x519740
cmp edx, dword [esp + 0xb8]
ja 0x5199c0
mov eax, dword [esp + 0x90]
lea edi, [eax + edx]
mov eax, dword [esp + 8]
cmp dword [edi], eax
jne 0x5197a5
add ebp, ecx
mov eax, dword [esp + 0x34]
cmp ebp, eax
mov edx, ebp
cmova edx, eax
add edi, 4
mov dword [esp + 4], edx
lea eax, [edx - 3]
mov edx, dword [esp + 0x94]
cmp eax, edx
jbe 0x5197c1
mov edx, dword [edx]
xor edx, dword [edi]
je 0x5197ba
bsf edx, edx
shr edx, 3
mov edi, dword [esp + 0x34]
lea eax, [edx + 4]
mov dword [esp + 0xc], eax
cmp ebp, edi
jae 0x519830
add edx, ecx
add edx, 4
mov ebp, dword [esp + 4]
cmp edx, ebp
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x44]
jne 0x519838
mov eax, dword [esp + 0x78]
mov edi, eax
mov edx, ebp
cmp ebx, ebp
jbe 0x5198c1
mov edx, dword [ebp]
xor edx, dword [eax]
je 0x5198b7
bsf edx, edx
shr edx, 3
mov edi, dword [esp + 0x44]
jmp 0x519980
mov dword [esp + 0x20], esi
mov esi, edx
mov edx, dword [esp + 0x2c]
lea ebp, [edx + esi]
mov esi, dword [esp + 0x10]
movzx edx, word [ecx + esi - 1]
cmp dx, word [esi + ebp - 1]
jne 0x519799
mov edx, dword [esp + 8]
cmp dword [ebp], edx
mov esi, dword [esp + 0x20]
jne 0x5197b2
lea edx, [ebp + 4]
mov eax, dword [esp + 0x94]
cmp ebx, eax
mov dword [esp + 4], ebp
jbe 0x51a080
mov eax, dword [eax]
xor eax, dword [edx]
je 0x519854
bsf ebp, eax
shr ebp, 3
mov eax, dword [esp + 0x14]
jmp 0x51995a
mov esi, dword [esp + 0x20]
mov edx, dword [esp]
jmp 0x5199c0
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x44]
jmp 0x5199c0
mov edx, dword [esp]
jmp 0x5199c0
add edi, 4
mov edx, dword [esp + 0x60]
mov dword [esp + 0x20], esi
cmp edx, eax
jae 0x5197e3
mov esi, dword [esp + 0x68]
add esi, edx
nop
mov ebx, dword [edx]
xor ebx, dword [edi]
jne 0x51980d
add edx, 4
add edi, 4
add esi, 4
cmp edx, eax
jb 0x5197d0
mov eax, dword [esp + 4]
add eax, 0xffffffff
cmp edx, eax
jae 0x51a02a
movzx eax, word [edi]
cmp ax, word [edx]
mov esi, dword [esp + 0x20]
jne 0x51a02e
add edx, 2
add edi, 2
jmp 0x51a02e
bsf edx, ebx
shr edx, 3
add edx, esi
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
lea eax, [edx + 4]
mov dword [esp + 0xc], eax
cmp ebp, edi
jb 0x5196fd
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0xc]
mov dword [esp + 0xc], edx
cmp edx, eax
jg 0x519998
mov edx, dword [esp]
mov eax, dword [esp + 0x14]
jmp 0x5199c0
add edx, 4
mov ebp, dword [esp + 0x60]
cmp ebp, ebx
jae 0x51a08a
mov eax, dword [esp + 0x68]
lea edi, [eax + ebp]
mov eax, dword [esp + 0x14]
nop
mov esi, dword [ebp]
xor esi, dword [edx]
jne 0x51994a
add ebp, 4
add edx, 4
add edi, 4
cmp ebp, ebx
jb 0x519870
cmp ebp, dword [esp + 0x10c]
mov dword [esp + 0xc], ebp
jae 0x51a09f
movzx esi, word [edx]
cmp si, word [ebp]
mov edi, dword [esp + 0x44]
jne 0x51a0a3
add dword [esp + 0xc], 2
add edx, 2
jmp 0x51a0a3
lea edx, [ebp + 4]
mov edi, dword [esp + 0x104]
mov dword [esp + 0x20], esi
cmp edx, ebx
jae 0x519903
mov esi, dword [esp + 0xf8]
sub esi, dword [esp]
mov eax, dword [esp + 0x110]
cmp eax, esi
cmovb esi, eax
mov ebp, edx
sub ebp, esi
nop word cs:[eax + eax]
nop dword [eax]
mov esi, dword [edx]
xor esi, dword [edi]
jne 0x519970
add edx, 4
add edi, 4
add ebp, 4
cmp edx, ebx
jb 0x5198f0
cmp edx, dword [esp + 0x10c]
jae 0x51991a
movzx esi, word [edi]
cmp si, word [edx]
jne 0x51991a
add edx, 2
add edi, 2
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x20]
cmp edx, ebp
jae 0x519940
mov bl, byte [edi]
mov byte [esp + 0x20], bl
mov bl, byte [esp + 0x20]
cmp bl, byte [edx]
mov ebx, 0
sete bl
add edx, ebx
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x44]
sub edx, dword [esp + 4]
jmp 0x519980
bsf ebp, esi
shr ebp, 3
add ebp, edi
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
mov edx, dword [esp]
add ebp, 4
mov dword [esp + 0xc], ebp
cmp ebp, dword [esp + 0x10]
mov ebp, dword [esp + 4]
jg 0x5199ac
jmp 0x5199c0
bsf edx, esi
shr edx, 3
add edx, ebp
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
add eax, edx
mov edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], edx
cmp edx, eax
jle 0x519848
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp]
lea ebp, [edx + ebx]
mov edx, ebx
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x9c], ebp
mov ebp, dword [esp + 0xc]
mov dword [esp + 0x10], ebp
nop dword [eax + eax]
add esi, 0xffffffff
mov ebp, dword [esp + 0x10]
cmp dword [esp + 0xc], ebp
jne 0x519ab3
add edx, ebp
cmp edx, eax
ja 0x519ab0
mov eax, dword [esp + 0xc]
cmp eax, 4
jl 0x519ab0
mov dword [esp + 0x20], esi
add eax, 0xfffffffd
mov dword [esp + 4], eax
xor ebp, ebp
mov esi, 0x10
mov edi, 1
mov edx, dword [esp]
mov ecx, dword [esp + 0x48]
nop word cs:[eax + eax]
lea ebx, [edx + ebp]
movzx ebx, bx
mov eax, dword [esp + 0x18]
movzx eax, word [eax + ebx*2 + 0x20000]
lea ebx, [esi + 1]
sar esi, 4
cmp edi, eax
cmovb edi, eax
mov eax, 0x10
cmovb ebx, eax
cmovb ecx, ebp
add ebp, esi
mov esi, ebx
cmp ebp, dword [esp + 4]
jl 0x519a10
mov dword [esp + 0x48], ecx
xor ebx, ebx
cmp edx, edi
setb byte [esp + 4]
mov eax, edi
mov ecx, 0
cmovb eax, ecx
cmp edi, 2
cmovb eax, ecx
sub edx, eax
mov dword [esp], edx
cmp edi, 1
jbe 0x519a8f
mov al, byte [esp + 4]
mov bl, al
or ebx, 2
mov eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
jmp 0x51963b
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
nop word cs:[eax + eax]
nop dword [eax]
mov edx, dword [esp]
mov dword [esp], edx
movzx eax, dx
mov edx, dword [esp + 0x18]
cmp word [edx + eax*2 + 0x20000], 1
mov dword [esp + 0x10], ebp
jne 0x519618
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x519b2a
cmp dword [esp + 0x28], 0
mov edx, dword [esp]
je 0x519b32
cmp dword [esp + 0x28], 2
jne 0x51961f
mov ebp, edi
lea edi, [edx - 1]
mov ecx, ebp
cmp edi, ebp
jb 0x519c8a
mov dword [esp + 0xb4], edi
mov edi, ebx
mov ebx, edx
mov edx, dword [esp + 0x40]
mov eax, edx
sub eax, ebx
mov dword [esp + 0x28], 2
cmp eax, 3
jae 0x519ba9
mov edx, dword [esp]
mov ebx, edi
jmp 0x519c86
mov edx, dword [esp]
jmp 0x51961f
mov dword [esp + 0x28], 1
cmp byte [esp + 0xe8], 0
je 0x51961f
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x94]
mov eax, edx
cmp ebx, edx
jbe 0x51a05f
mov edx, dword [eax]
xor edx, dword [esp + 8]
jne 0x519c4d
add eax, 4
add ecx, 4
cmp eax, ebx
jb 0x519b60
mov ebp, edi
mov edi, dword [esp + 0x34]
cmp eax, edi
jae 0x51a076
sub edi, ecx
lea ecx, [eax + edi]
mov edx, dword [esp + 8]
cmp byte [eax], dl
jne 0x519b9e
add eax, 1
shr edx, 8
add edi, 0xffffffff
jne 0x519b8d
mov eax, ecx
mov ecx, eax
mov edi, dword [esp + 0x44]
jmp 0x519c55
mov ebp, dword [esp + 0xb4]
cmp ebp, edx
mov ebx, dword [esp + 0x2c]
cmovb ebx, dword [esp + 0x90]
mov eax, dword [esp + 8]
cmp dword [ebx + ebp], eax
mov eax, ebx
mov ebx, edi
jne 0x519c83
mov dword [esp + 0x20], esi
cmp ebp, edx
mov esi, dword [esp + 0x34]
cmovb esi, dword [esp + 0x54]
mov ecx, eax
mov dword [esp + 0xe4], eax
add eax, ebp
mov dword [esp + 4], eax
lea edx, [eax + 4]
mov dword [esp + 0xc], esi
add esi, 0xfffffffd
mov ecx, edx
cmp esi, edx
jbe 0x519c22
mov eax, dword [esp]
mov ecx, dword [esp + 0xe4]
add eax, ecx
add eax, 3
mov ecx, edx
nop
mov edi, dword [ecx]
xor edi, dword [esp + 8]
jne 0x519c95
add ecx, 4
add eax, 4
cmp ecx, esi
jb 0x519c10
cmp ecx, dword [esp + 0xc]
mov esi, ecx
mov edi, dword [esp + 0x40]
jae 0x519ca1
mov ecx, dword [esp + 0xc]
sub ecx, esi
mov eax, dword [esp + 8]
cmp byte [esi], al
jne 0x519ca1
add esi, 1
shr eax, 8
add ecx, 0xffffffff
jne 0x519c38
mov esi, dword [esp + 0xc]
jmp 0x519ca1
bsf eax, edx
shr eax, 3
add ecx, eax
mov edx, dword [esp]
add ecx, dword [esp + 0xc8]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x28], 2
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x28], 2
je 0x519aed
jmp 0x51961f
mov edx, dword [esp]
mov eax, dword [esp + 0x48]
mov edi, ecx
mov ecx, dword [esp + 0x24]
jmp 0x51961f
bsf esi, edi
shr esi, 3
add esi, eax
mov edi, dword [esp + 0x40]
sub esi, edx
add esi, 4
cmp ebp, edi
jae 0x519cd3
mov edi, dword [esp + 4]
lea eax, [edi + esi]
cmp eax, dword [esp + 0xc]
mov ecx, dword [esp]
je 0x519cdd
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xf0], eax
mov edx, eax
jmp 0x519d5b
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x78]
jmp 0x519d4b
mov ebp, esi
lea ecx, [esi*8]
mov edx, dword [esp + 8]
rol edx, cl
mov eax, dword [esp + 0x78]
mov edi, eax
mov ecx, eax
cmp ebx, eax
jbe 0x51a0f1
nop dword [eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x519d32
add ecx, 4
add edi, 4
cmp ecx, ebx
jb 0x519d00
mov eax, dword [esp + 0x34]
cmp ecx, eax
jae 0x519d3a
sub eax, edi
lea esi, [ecx + eax]
cmp byte [ecx], dl
jne 0x519d2e
add ecx, 1
shr edx, 8
add eax, 0xffffffff
jne 0x519d1d
mov ecx, esi
mov edi, ecx
jmp 0x519d3a
bsf eax, eax
shr eax, 3
add edi, eax
sub ebp, dword [esp + 0x78]
add ebp, edi
mov dword [esp + 0x28], ebp
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xf0], eax
mov edx, eax
mov ecx, dword [esp]
mov edi, dword [esp + 4]
mov eax, dword [esp + 8]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x48], edx
lea eax, [edx + 4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xe4]
lea ebp, [eax + ecx]
xor ebx, ebx
nop dword [eax]
mov edx, ebx
mov esi, edi
mov eax, dword [esp + 4]
add eax, ebx
cmp eax, dword [esp + 0xc]
jb 0x519da0
lea ebx, [edx - 4]
lea edi, [esi - 4]
mov ecx, dword [esp + 8]
cmp dword [ebp + edx - 5], ecx
je 0x519d80
lea edi, [edx + ebp]
add edi, 0xffffffff
mov ebx, dword [esp + 0x48]
cmp eax, ebx
jbe 0x51a0d0
mov ecx, dword [esp + 0xfc]
cmp byte [edx + ebp - 2], cl
mov ebp, dword [esp + 0xb4]
jne 0x519e0e
mov ecx, dword [esp + 0xf0]
sub ecx, dword [esp]
sub ecx, dword [esp + 0xe4]
sub ecx, edx
add eax, ecx
add eax, 1
lea ecx, [esp + 0xb2]
nop word cs:[eax + eax]
nop
lea edi, [esi - 1]
cmp edi, ebx
jbe 0x51a04f
movzx edx, byte [esi - 2]
lea ebx, [ecx - 1]
mov esi, edi
cmp dl, byte [ecx]
mov ecx, ebx
mov ebx, dword [esp + 0x48]
je 0x519df0
mov eax, dword [esp + 4]
mov ebx, eax
sub ebx, edi
cmp ebp, dword [esp + 0x40]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0xc], ebx
jae 0x519e35
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
jmp 0x519f20
sub eax, ebx
cmp eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
jne 0x519f20
mov eax, dword [esp + 0xd0]
cmp eax, dword [esp + 0x40]
jae 0x519f20
mov ecx, ebx
neg ecx
shl ecx, 3
mov eax, dword [esp + 8]
rol eax, cl
mov dword [esp + 0xb0], eax
mov dword [esp], eax
shr eax, 0x18
mov dword [esp + 0x48], eax
mov edi, dword [esp + 0x98]
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0xc0]
nop
mov ecx, ebx
mov eax, esi
mov edx, edi
lea ebp, [ebx + 1]
cmp ebp, dword [esp + 0x70]
jb 0x519eb8
lea ebx, [ecx - 4]
lea esi, [eax - 4]
lea edi, [edx + 4]
mov dword [esp + 4], eax
mov eax, dword [esp]
cmp dword [ecx - 3], eax
mov eax, dword [esp + 4]
je 0x519e90
mov dword [esp + 4], ebp
cmp ebp, dword [esp + 0xa4]
jbe 0x51a0dc
mov ebx, dword [esp + 0x48]
cmp byte [ecx], bl
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0xc]
jne 0x519f12
add dword [esp + 4], edx
lea esi, [esp + 0xb2]
cmp ecx, dword [esp + 0xa4]
jbe 0x51a056
movzx eax, byte [ecx - 1]
add ecx, 0xffffffff
lea edx, [esi - 1]
cmp al, byte [esi]
mov esi, edx
je 0x519eec
add ecx, 1
mov eax, ecx
mov esi, dword [esp + 0x20]
add ebx, dword [esp + 0x54]
sub ebx, eax
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xb4]
mov ebx, eax
sub ebx, dword [esp + 0xc]
cmp ebx, edi
cmovbe ebx, edi
sub eax, ebx
add eax, dword [esp + 0x28]
mov edx, dword [esp + 0x74]
cmp dword [esp + 0x28], edx
ja 0x519f82
cmp eax, edx
jb 0x519f82
mov eax, dword [esp + 0xb4]
sub eax, edx
mov edx, dword [esp + 0x28]
add edx, eax
mov eax, edx
not eax
mov ebx, dword [esp + 0x40]
add eax, ebx
cmp eax, 3
cmovb edx, ebx
mov dword [esp + 0x48], 0
mov ebx, 2
mov dword [esp + 0x28], 2
mov dword [esp], edx
jmp 0x51963b
mov dword [esp], ebx
mov esi, ebx
not esi
mov edx, dword [esp + 0x40]
add esi, edx
mov dword [esp + 0x48], 0
mov ebx, 2
cmp esi, 3
jae 0x519fb5
mov dword [esp + 0x28], 2
mov dword [esp], edx
mov esi, dword [esp + 0x20]
jmp 0x51963b
mov ecx, dword [esp + 0x74]
cmp eax, ecx
cmovae eax, ecx
cmp dword [esp + 0x10], eax
jae 0x519ff4
mov esi, dword [esp + 0x14]
mov edx, dword [esp]
sub esi, edx
cmp esi, 0xffff
mov ecx, dword [esp + 0x24]
ja 0x51b028
mov esi, dword [esp + 0x2c]
add esi, edx
mov dword [esp + 0x9c], esi
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0x20]
jmp 0x519fff
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp]
movzx eax, dx
mov edi, dword [esp + 0x18]
movzx eax, word [edi + eax*2 + 0x20000]
mov dword [esp + 0x28], 2
sub edx, eax
mov dword [esp], edx
mov edi, dword [esp + 0x44]
jae 0x51963b
jmp 0x51b02c
mov esi, dword [esp + 0x20]
cmp edx, dword [esp + 4]
jae 0x51a03f
mov al, byte [edi]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov ebx, dword [esp + 0x1c]
sub edx, dword [esp + 0x94]
jmp 0x5196ea
mov edi, eax
jmp 0x519e0e
mov eax, dword [esp + 4]
jmp 0x519f0e
mov eax, dword [esp + 0x94]
mov ecx, eax
mov ebp, edi
mov edi, dword [esp + 0x34]
cmp eax, edi
jb 0x519b84
mov edx, dword [esp]
mov edi, ebp
jmp 0x519c58
mov ebp, eax
cmp ebp, ebx
jb 0x519863
mov eax, dword [esp + 0x14]
cmp ebp, dword [esp + 0x10c]
mov dword [esp + 0xc], ebp
jb 0x519899
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0xc]
cmp ebp, dword [esp + 0x34]
jae 0x51a0c1
mov dl, byte [edx]
xor ebx, ebx
cmp dl, byte [ebp]
sete bl
add ebp, ebx
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp]
sub ebp, dword [esp + 0x94]
jmp 0x51995d
mov ebp, dword [esp + 0xb4]
jmp 0x519e0e
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0xc]
jmp 0x519f12
mov ecx, dword [esp + 0x78]
mov edi, ecx
mov eax, dword [esp + 0x34]
cmp ecx, eax
jb 0x519d18
jmp 0x519d3a
mov dword [esp + 0xf4], esi
cmp ebp, edx
mov esi, dword [esp + 0x2c]
jg 0x51a12f
lea ecx, [edx + 3]
mov esi, dword [esp + 0xec]
cmp dword [esi + ebx + 0x40], ecx
mov esi, dword [esp + 0x2c]
jl 0x5193a3
mov dword [esp + 0x80], edx
mov dword [esp + 0x3c], edi
mov ecx, dword [esp + 0x24]
mov edx, ecx
sub edx, esi
lea edi, [edx - 0xffff]
cmp dword [esp + 0x50], edx
cmova edi, dword [esp + 0xd0]
mov dword [esp + 0x28], edi
mov ecx, dword [ecx]
mov dword [esp + 8], ecx
mov dword [esp + 0x14], edx
cmp eax, edx
mov edi, dword [esp + 0x30]
jae 0x51a254
mov ebp, 0xffff
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0xbc]
add edx, ecx
mov ebx, edi
sub ebx, eax
mov ecx, eax
test bl, 1
je 0x51a1c4
mov ecx, dword [esp + 0x2c]
imul ecx, dword [ecx + eax], 0x9e3779b1
shr ecx, 0x11
mov esi, eax
mov edi, dword [esp + 0x18]
sub esi, dword [edi + ecx*4]
cmp esi, 0xffff
cmovae esi, ebp
movzx edi, ax
mov ebx, dword [esp + 0x18]
mov word [ebx + edi*2 + 0x20000], si
mov esi, dword [esp + 0x18]
mov dword [esi + ecx*4], eax
lea ecx, [eax + 1]
cmp edx, eax
mov ebp, dword [esp + 0x2c]
mov ebx, 0xffff
je 0x51a254
add ecx, 1
nop dword [eax + eax]
lea eax, [ecx - 1]
imul edx, dword [ebp + ecx - 1], 0x9e3779b1
shr edx, 0x11
mov esi, dword [esp + 0x18]
mov esi, dword [esi + edx*4]
not esi
add esi, ecx
cmp esi, 0xffff
cmovae esi, ebx
movzx edi, ax
mov ebx, dword [esp + 0x18]
mov word [ebx + edi*2 + 0x20000], si
mov ebx, 0xffff
mov edi, dword [esp + 0x18]
mov dword [edi + edx*4], eax
imul eax, dword [ebp + ecx], 0x9e3779b1
shr eax, 0x11
mov edx, ecx
sub edx, dword [edi + eax*4]
cmp edx, 0xffff
cmovae edx, ebx
movzx esi, cx
mov word [edi + esi*2 + 0x20000], dx
mov dword [edi + eax*4], ecx
mov edi, dword [esp + 0x30]
lea eax, [ecx + 2]
add ecx, 1
cmp ecx, edi
mov ecx, eax
jne 0x51a1e0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x40014], eax
mov edx, dword [esp + 0x24]
imul eax, dword [edx], 0x9e3779b1
shr eax, 0x11
mov dword [esp + 0xfc], eax
mov eax, dword [ecx + eax*4]
mov dword [esp], eax
lea eax, [edx + 4]
mov dword [esp + 0x94], eax
lea eax, [edx + 8]
mov dword [esp + 0x60], eax
mov ebx, dword [esp + 8]
movzx eax, bx
mov ecx, ebx
shr ecx, 0x10
xor ecx, eax
movzx eax, bl
shr ebx, 0x18
mov dword [esp + 0x88], ebx
xor eax, ebx
or eax, ecx
mov ecx, edx
sete byte [esp + 0xe8]
mov eax, edx
neg eax
mov dword [esp + 0xe4], eax
mov ebp, 3
mov dword [esp + 0x9c], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x44], 0
xor eax, eax
mov esi, dword [esp + 0x100]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
jmp 0x51a336
mov edx, dword [esp]
mov ebp, ebx
mov eax, dword [esp + 0xc]
add eax, edx
movzx eax, ax
mov ebx, edx
mov edx, dword [esp + 0x18]
movzx eax, word [edx + eax*2 + 0x20000]
sub ebx, eax
mov eax, dword [esp + 0xc]
mov dword [esp], ebx
xor ebx, ebx
cmp ebx, 3
mov ebx, ebp
mov ebp, dword [esp + 0x10]
je 0x51ae4a
mov edx, dword [esp]
cmp edx, edi
jb 0x51ae4a
test esi, esi
jle 0x51ae4a
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x48], 0
cmp byte [esp + 0x6c], 0
mov eax, dword [esp + 0x14]
je 0x51a375
mov edx, eax
sub edx, dword [esp]
cmp edx, 8
mov edx, dword [esp]
jb 0x51a6d0
mov ebp, dword [esp + 0x40]
sub ebp, edx
jbe 0x51a440
cmp edx, dword [esp + 0xb8]
ja 0x51a6d0
mov eax, dword [esp + 0x90]
lea edi, [eax + edx]
mov eax, dword [esp + 8]
cmp dword [edi], eax
jne 0x51a4a9
add ebp, ecx
mov eax, dword [esp + 0x34]
cmp ebp, eax
mov edx, ebp
cmova edx, eax
add edi, 4
mov dword [esp + 4], edx
lea eax, [edx - 3]
mov edx, dword [esp + 0x94]
cmp eax, edx
jbe 0x51a4bd
mov edx, dword [edx]
xor edx, dword [edi]
je 0x51a4b6
bsf edx, edx
shr edx, 3
mov edi, dword [esp + 0x34]
lea eax, [edx + 4]
mov dword [esp + 0x48], eax
cmp ebp, edi
jae 0x51a530
add edx, ecx
add edx, 4
mov ebp, dword [esp + 4]
cmp edx, ebp
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
jne 0x51a538
mov eax, dword [esp + 0x78]
mov edi, eax
mov edx, ebp
cmp ebx, ebp
jbe 0x51a5bb
mov edx, dword [ebp]
xor edx, dword [eax]
je 0x51a5b1
bsf edx, edx
shr edx, 3
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
jmp 0x51a68e
mov dword [esp + 0x20], esi
mov esi, edx
mov edx, dword [esp + 0x2c]
lea ebp, [edx + esi]
mov esi, dword [esp + 0x10]
movzx edx, word [ecx + esi - 1]
cmp dx, word [esi + ebp - 1]
jne 0x51a499
mov edx, dword [esp + 8]
cmp dword [ebp], edx
mov esi, dword [esp + 0x20]
jne 0x51a49d
lea edx, [ebp + 4]
mov eax, dword [esp + 0x94]
cmp ebx, eax
mov dword [esp + 4], ebp
jbe 0x51adb3
mov eax, dword [eax]
xor eax, dword [edx]
je 0x51a554
bsf ebp, eax
shr ebp, 3
mov eax, dword [esp + 0x14]
jmp 0x51a662
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp]
jmp 0x51a6d0
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
jmp 0x51a6d0
add edi, 4
mov edx, dword [esp + 0x60]
mov ecx, esi
cmp edx, eax
jae 0x51a4e3
mov esi, dword [esp + 0x68]
add esi, edx
nop dword [eax]
mov ebx, dword [edx]
xor ebx, dword [edi]
jne 0x51a50b
add edx, 4
add edi, 4
add esi, 4
cmp edx, eax
jb 0x51a4d0
mov eax, dword [esp + 4]
add eax, 0xffffffff
cmp edx, eax
jae 0x51ad53
movzx eax, word [edi]
cmp ax, word [edx]
mov esi, ecx
jne 0x51ad55
add edx, 2
add edi, 2
jmp 0x51ad55
bsf edx, ebx
shr edx, 3
add edx, esi
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x1c]
mov esi, ecx
mov ecx, dword [esp + 0x24]
lea eax, [edx + 4]
mov dword [esp + 0x48], eax
cmp ebp, edi
jb 0x51a3ed
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x48], ebp
cmp ebp, edx
jg 0x51a6a4
mov edx, dword [esp]
jmp 0x51a6d0
add edx, 4
mov ecx, dword [esp + 0x60]
cmp ecx, ebx
jae 0x51adbd
mov eax, dword [esp + 0x68]
lea edi, [eax + ecx]
mov eax, dword [esp + 0x14]
nop
mov esi, dword [ecx]
xor esi, dword [edx]
jne 0x51a652
add ecx, 4
add edx, 4
add edi, 4
cmp ecx, ebx
jb 0x51a570
cmp ecx, dword [esp + 0x10c]
jae 0x51adce
movzx esi, word [edx]
cmp si, word [ecx]
mov edi, dword [esp + 0x28]
jne 0x51ad81
add ecx, 2
mov ebp, ecx
add edx, 2
jmp 0x51ad83
lea edx, [ebp + 4]
mov edi, dword [esp + 0x104]
mov ecx, esi
cmp edx, ebx
jae 0x51ae0c
mov esi, dword [esp + 0xf8]
sub esi, dword [esp]
mov eax, dword [esp + 0x110]
cmp eax, esi
cmovb esi, eax
mov ebp, edx
sub ebp, esi
mov eax, dword [esp + 0x14]
nop word cs:[eax + eax]
nop dword [eax]
mov esi, dword [edx]
xor esi, dword [edi]
jne 0x51a67c
add edx, 4
add edi, 4
add ebp, 4
cmp edx, ebx
jb 0x51a5f0
cmp edx, dword [esp + 0x10c]
jae 0x51a61e
movzx esi, word [edi]
cmp si, word [edx]
jne 0x51a61e
add edx, 2
add edi, 2
mov ebp, dword [esp + 0x34]
mov esi, ecx
cmp edx, ebp
mov ecx, dword [esp + 0x24]
jae 0x51a646
mov bl, byte [edi]
mov byte [esp + 0x20], bl
mov bl, byte [esp + 0x20]
cmp bl, byte [edx]
mov ebx, 0
sete bl
add edx, ebx
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 4]
sub edx, ebp
jmp 0x51a68e
bsf ebp, esi
shr ebp, 3
add ebp, edi
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp]
add ebp, 4
mov dword [esp + 0x48], ebp
cmp ebp, dword [esp + 0x10]
mov ebp, dword [esp + 4]
jg 0x51a6b8
jmp 0x51a6d0
bsf edx, esi
shr edx, 3
add edx, ebp
mov edi, dword [esp + 0x28]
mov esi, ecx
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x48]
add ebp, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x48], ebp
cmp ebp, edx
jle 0x51a54c
mov edx, dword [esp + 0x2c]
mov ecx, ebx
mov ebx, dword [esp]
lea ebp, [edx + ebx]
mov edx, ebx
mov ebx, ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x9c], ebp
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x10], ebp
nop word [eax + eax]
add esi, 0xffffffff
mov ebp, dword [esp + 0x10]
cmp dword [esp + 0x48], ebp
jne 0x51a7c3
add edx, ebp
cmp edx, eax
ja 0x51a7c0
mov eax, dword [esp + 0x48]
cmp eax, 4
jl 0x51a7c0
mov dword [esp + 0x20], esi
add eax, 0xfffffffd
mov dword [esp + 4], eax
xor ebp, ebp
mov esi, 0x10
mov edi, 1
mov edx, dword [esp]
mov ecx, dword [esp + 0xc]
nop word cs:[eax + eax]
lea ebx, [edx + ebp]
movzx ebx, bx
mov eax, dword [esp + 0x18]
movzx eax, word [eax + ebx*2 + 0x20000]
lea ebx, [esi + 1]
sar esi, 4
cmp edi, eax
cmovb edi, eax
mov eax, 0x10
cmovb ebx, eax
cmovb ecx, ebp
add ebp, esi
mov esi, ebx
cmp ebp, dword [esp + 4]
jl 0x51a720
mov dword [esp + 0xc], ecx
xor ebx, ebx
cmp edx, edi
setb byte [esp + 4]
mov eax, edi
mov ecx, 0
cmovb eax, ecx
cmp edi, 2
cmovb eax, ecx
sub edx, eax
mov dword [esp], edx
cmp edi, 1
mov esi, dword [esp + 0x20]
jbe 0x51a7a3
mov al, byte [esp + 4]
mov bl, al
or ebx, 2
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0xc]
jmp 0x51a327
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x10]
nop word cs:[eax + eax]
nop dword [eax]
mov edx, dword [esp]
mov dword [esp], edx
movzx eax, dx
mov edx, dword [esp + 0x18]
cmp word [edx + eax*2 + 0x20000], 1
mov dword [esp + 0x10], ebp
jne 0x51a300
cmp dword [esp + 0xc], 0
jne 0x51a300
mov eax, dword [esp + 0x44]
test eax, eax
mov edx, dword [esp]
je 0x51a83e
cmp eax, 2
jne 0x51a995
mov ebp, edi
lea edi, [edx - 1]
cmp edi, ebp
jb 0x51a8b9
mov dword [esp + 0xb4], edi
mov edi, ebx
mov ebx, edx
mov edx, dword [esp + 0x40]
mov eax, edx
sub eax, ebx
mov dword [esp + 0x44], 2
cmp eax, 3
jae 0x51a8c6
mov edx, dword [esp]
mov ebx, edi
mov edi, dword [esp + 0x28]
jmp 0x51a303
mov dword [esp + 0x44], 1
cmp byte [esp + 0xe8], 0
je 0x51a303
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x94]
mov eax, edx
cmp ebx, edx
jbe 0x51ad92
nop dword [eax]
mov edx, dword [eax]
xor edx, dword [esp + 8]
jne 0x51a96d
add eax, 4
add ecx, 4
cmp eax, ebx
jb 0x51a870
mov ebp, edi
mov edi, dword [esp + 0x34]
cmp eax, edi
jae 0x51ada9
sub edi, ecx
lea ecx, [eax + edi]
mov edx, dword [esp + 8]
cmp byte [eax], dl
jne 0x51a8ae
add eax, 1
shr edx, 8
add edi, 0xffffffff
jne 0x51a89d
mov eax, ecx
mov ecx, eax
mov edi, dword [esp + 0x28]
jmp 0x51a975
mov dword [esp + 0x44], eax
mov edi, dword [esp + 0x28]
jmp 0x51a303
mov ebp, dword [esp + 0xb4]
cmp ebp, edx
mov ebx, dword [esp + 0x2c]
cmovb ebx, dword [esp + 0x90]
mov eax, dword [esp + 8]
cmp dword [ebx + ebp], eax
mov eax, ebx
mov ebx, edi
jne 0x51a99e
mov dword [esp + 0x20], esi
cmp ebp, edx
mov esi, dword [esp + 0x34]
cmovb esi, dword [esp + 0x54]
mov ecx, eax
mov dword [esp + 0x44], eax
add eax, ebp
mov dword [esp + 4], eax
lea edx, [eax + 4]
mov dword [esp + 0xc], esi
add esi, 0xfffffffd
mov ecx, edx
cmp esi, edx
jbe 0x51a942
mov eax, dword [esp]
mov ecx, dword [esp + 0x44]
add eax, ecx
add eax, 3
mov ecx, edx
nop word cs:[eax + eax]
nop
mov edi, dword [ecx]
xor edi, dword [esp + 8]
jne 0x51a9aa
add ecx, 4
add eax, 4
cmp ecx, esi
jb 0x51a930
cmp ecx, dword [esp + 0xc]
mov esi, ecx
mov edi, dword [esp + 0x40]
jae 0x51a9b6
mov ecx, dword [esp + 0xc]
sub ecx, esi
mov eax, dword [esp + 8]
cmp byte [esi], al
jne 0x51a9b6
add esi, 1
shr eax, 8
add ecx, 0xffffffff
jne 0x51a958
mov esi, dword [esp + 0xc]
jmp 0x51a9b6
bsf eax, edx
shr eax, 3
add ecx, eax
mov edx, dword [esp]
add ecx, dword [esp + 0xe4]
mov dword [esp + 0x74], ecx
mov eax, 2
mov ecx, dword [esp + 0x24]
cmp eax, 2
je 0x51a7ff
mov dword [esp + 0x44], eax
jmp 0x51a303
mov edx, dword [esp]
mov edi, dword [esp + 0x28]
jmp 0x51a303
bsf esi, edi
shr esi, 3
add esi, eax
mov edi, dword [esp + 0x40]
sub esi, edx
add esi, 4
cmp ebp, edi
mov ebp, dword [esp + 0x34]
jae 0x51a9e1
mov edx, dword [esp + 4]
lea eax, [edx + esi]
cmp eax, dword [esp + 0xc]
mov ecx, dword [esp]
mov eax, esi
je 0x51a9fb
mov dword [esp + 0xc8], eax
jmp 0x51aa6c
mov dword [esp + 0xc8], esi
mov eax, dword [esp + 0x78]
mov dword [esp + 0x64], eax
mov esi, eax
mov ecx, dword [esp]
mov edx, dword [esp + 4]
jmp 0x51aa79
mov esi, eax
lea ecx, [eax*8]
mov edx, dword [esp + 8]
rol edx, cl
mov eax, dword [esp + 0x78]
mov edi, eax
mov ecx, eax
cmp ebx, eax
jbe 0x51ae2f
nop word [eax + eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x51aa4e
add ecx, 4
add edi, 4
cmp ecx, ebx
jb 0x51aa20
cmp ecx, ebp
jae 0x51aa56
sub ebp, edi
lea edi, [ecx + ebp]
cmp byte [ecx], dl
jne 0x51aa4a
add ecx, 1
shr edx, 8
add ebp, 0xffffffff
jne 0x51aa39
mov ecx, edi
mov edi, ecx
jmp 0x51aa56
bsf eax, eax
shr eax, 3
add edi, eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp]
mov edx, dword [esp + 4]
sub esi, eax
add esi, edi
mov dword [esp + 0xc8], esi
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x64], eax
mov esi, eax
mov eax, dword [esp + 8]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x48], esi
lea eax, [esi + 4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x44]
add ecx, eax
xor ebx, ebx
mov edi, edx
nop dword [eax]
mov edx, ebx
mov esi, edi
mov eax, dword [esp + 4]
add eax, ebx
cmp eax, dword [esp + 0xc]
jb 0x51aac4
lea ebx, [edx - 4]
lea edi, [esi - 4]
mov ebp, ecx
mov ecx, dword [esp + 8]
cmp dword [ebp + edx - 5], ecx
mov ecx, ebp
je 0x51aaa0
lea edi, [edx + ecx]
add edi, 0xffffffff
cmp eax, dword [esp + 0x48]
mov ebp, dword [esp + 0xb4]
jbe 0x51ae03
mov ebx, ecx
mov ecx, dword [esp + 0x88]
cmp byte [edx + ebx - 2], cl
mov ebx, dword [esp + 0x1c]
jne 0x51ab30
mov ecx, dword [esp + 0x64]
sub ecx, dword [esp]
sub ecx, dword [esp + 0x44]
sub ecx, edx
add eax, ecx
add eax, 1
lea ecx, [esp + 0xb2]
nop word [eax + eax]
lea edi, [esi - 1]
cmp edi, dword [esp + 0x48]
jbe 0x51ad7a
movzx edx, byte [esi - 2]
lea ebx, [ecx - 1]
mov esi, edi
cmp dl, byte [ecx]
mov ecx, ebx
mov ebx, dword [esp + 0x1c]
je 0x51ab10
mov eax, dword [esp + 4]
mov esi, eax
sub esi, edi
cmp ebp, dword [esp + 0x40]
mov dword [esp + 0xc], esi
jae 0x51ab4f
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
jmp 0x51ac44
sub eax, esi
cmp eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
jne 0x51ac44
mov eax, dword [esp + 0xd0]
cmp eax, dword [esp + 0x40]
jae 0x51ac44
mov ecx, esi
neg ecx
shl ecx, 3
mov eax, dword [esp + 8]
rol eax, cl
mov dword [esp + 0xb0], eax
mov dword [esp], eax
shr eax, 0x18
mov dword [esp + 0x48], eax
mov edi, dword [esp + 0x98]
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0xc0]
nop word cs:[eax + eax]
nop
mov ecx, ebx
mov eax, esi
mov edx, edi
lea esi, [ebx + 1]
mov dword [esp + 4], esi
cmp esi, dword [esp + 0x70]
jb 0x51abd4
lea ebx, [ecx - 4]
lea esi, [eax - 4]
lea edi, [edx + 4]
mov ebp, dword [esp]
cmp dword [ecx - 3], ebp
je 0x51abb0
mov esi, dword [esp + 4]
cmp esi, dword [esp + 0xa4]
jbe 0x51ae22
mov ebx, dword [esp + 0x48]
cmp byte [ecx], bl
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0xc]
jne 0x51ac36
add dword [esp + 4], edx
lea esi, [esp + 0xb2]
nop word cs:[eax + eax]
nop
cmp ecx, dword [esp + 0xa4]
jbe 0x51ad89
movzx eax, byte [ecx - 1]
add ecx, 0xffffffff
lea edx, [esi - 1]
cmp al, byte [esi]
mov esi, edx
je 0x51ac10
add ecx, 1
mov eax, ecx
mov esi, dword [esp + 0xc]
add esi, dword [esp + 0x54]
sub esi, eax
mov dword [esp + 0xc], esi
mov ecx, dword [esp + 0x24]
mov ebp, ebx
mov eax, dword [esp + 0xb4]
mov esi, eax
sub esi, dword [esp + 0xc]
cmp esi, edi
cmovbe esi, edi
sub eax, esi
mov edx, dword [esp + 0xc8]
add eax, edx
mov ebx, dword [esp + 0x74]
cmp edx, ebx
ja 0x51acae
mov edx, ebx
cmp eax, ebx
jb 0x51acae
mov eax, dword [esp + 0xb4]
sub eax, edx
mov esi, dword [esp + 0xc8]
add esi, eax
mov eax, esi
not eax
mov edx, dword [esp + 0x40]
add eax, edx
cmp eax, 3
cmovb esi, edx
xor eax, eax
mov ebx, 2
mov dword [esp + 0x44], 2
mov dword [esp], esi
mov esi, dword [esp + 0x20]
jmp 0x51a327
mov dword [esp], esi
not esi
mov edx, dword [esp + 0x40]
add esi, edx
mov ebx, 2
cmp esi, 3
jae 0x51acd9
mov dword [esp + 0x44], 2
mov dword [esp], edx
mov esi, dword [esp + 0x20]
xor eax, eax
jmp 0x51a327
mov esi, dword [esp + 0x74]
cmp eax, esi
cmovae eax, esi
cmp dword [esp + 0x10], eax
jae 0x51ad18
mov esi, dword [esp + 0x14]
mov edx, dword [esp]
sub esi, edx
cmp esi, 0xffff
mov ecx, dword [esp + 0x24]
ja 0x51ae42
mov esi, dword [esp + 0x2c]
add esi, edx
mov dword [esp + 0x9c], esi
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0x20]
jmp 0x51ad23
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp]
movzx eax, dx
mov edi, dword [esp + 0x18]
movzx eax, word [edi + eax*2 + 0x20000]
mov dword [esp + 0x44], 2
sub edx, eax
mov dword [esp], edx
mov edi, dword [esp + 0x28]
mov eax, 0
jae 0x51a327
jmp 0x51ae46
mov esi, ecx
mov ecx, dword [esp + 0x24]
cmp edx, dword [esp + 4]
jae 0x51ad6a
mov al, byte [edi]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov ebx, dword [esp + 0x1c]
sub edx, dword [esp + 0x94]
jmp 0x51a3da
mov edi, eax
jmp 0x51ab30
mov ebp, ecx
mov ecx, dword [esp + 0x34]
jmp 0x51add8
mov eax, dword [esp + 4]
jmp 0x51ac32
mov eax, dword [esp + 0x94]
mov ecx, eax
mov ebp, edi
mov edi, dword [esp + 0x34]
cmp eax, edi
jb 0x51a894
mov edx, dword [esp]
mov edi, ebp
jmp 0x51a978
mov ecx, eax
cmp ecx, ebx
jb 0x51a563
mov eax, dword [esp + 0x14]
cmp ecx, dword [esp + 0x10c]
jb 0x51a594
mov ebp, ecx
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
cmp ebp, ecx
mov ecx, dword [esp + 0x24]
jae 0x51adf4
mov dl, byte [edx]
xor ebx, ebx
cmp dl, byte [ebp]
sete bl
add ebp, ebx
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp]
sub ebp, dword [esp + 0x94]
jmp 0x51a669
mov ebx, dword [esp + 0x1c]
jmp 0x51ab30
mov eax, dword [esp + 0x14]
cmp edx, dword [esp + 0x10c]
jb 0x51a610
jmp 0x51a61e
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
jmp 0x51ac32
mov ecx, dword [esp + 0x78]
mov edi, ecx
cmp ecx, ebp
jb 0x51aa34
jmp 0x51aa56
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x10]
test esi, esi
jle 0x51afe6
mov edx, dword [esp + 0x14]
mov eax, edx
sub eax, edi
cmp eax, 0xfffe
ja 0x51afe6
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0xac]
mov ebx, dword [eax + 0x40000]
mov esi, dword [eax + 0x40004]
mov dword [esp + 4], esi
sub ebx, esi
mov esi, dword [esp + 0xfc]
mov esi, dword [eax + esi*4]
add edi, esi
mov dword [esp], ebx
sub edi, ebx
mov eax, edx
sub eax, edi
cmp eax, 0xffff
mov ebx, dword [esp + 0x5c]
jbe 0x51af03
jmp 0x51afea
bsf edx, eax
shr edx, 3
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x10]
add edx, 4
add eax, edi
cmp edx, ebp
mov ebp, dword [esp + 0x9c]
cmovg ebp, eax
mov dword [esp + 0x9c], ebp
mov ebp, dword [esp + 0x10]
cmovg ebp, edx
movzx eax, si
mov edx, dword [esp + 0xac]
movzx eax, word [edx + eax*2 + 0x20000]
sub esi, eax
sub edi, eax
mov eax, dword [esp + 0x14]
sub eax, edi
cmp eax, 0x10000
jae 0x51afea
sub dword [esp + 0x20], 1
jb 0x51afea
mov eax, dword [esp + 8]
mov edx, dword [esp + 4]
cmp dword [edx + esi], eax
jne 0x51aedc
mov dword [esp + 0x10], ebp
mov dword [esp + 0x28], edi
mov edi, dword [esp]
sub edi, esi
add edi, ecx
mov eax, dword [esp + 0x34]
cmp edi, eax
cmova edi, eax
lea ebx, [edx + esi]
add ebx, 4
lea ebp, [edi - 3]
mov edx, dword [esp + 0x94]
cmp ebp, edx
jbe 0x51af58
mov eax, dword [edx]
xor eax, dword [ebx]
jne 0x51aea7
add ebx, 4
mov edx, dword [esp + 0x60]
cmp edx, ebp
jae 0x51af83
mov eax, dword [esp + 0x68]
add eax, edx
nop word cs:[eax + eax]
nop dword [eax]
mov ecx, dword [edx]
xor ecx, dword [ebx]
jne 0x51af9e
add edx, 4
add ebx, 4
add eax, 4
cmp edx, ebp
jb 0x51af70
lea eax, [edi - 1]
cmp edx, eax
jae 0x51afb7
movzx eax, word [ebx]
cmp ax, word [edx]
mov ebp, dword [esp + 0x10]
jne 0x51afbb
add edx, 2
add ebx, 2
jmp 0x51afbb
bsf edx, ecx
shr edx, 3
add edx, eax
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
jmp 0x51aeb5
mov ebp, dword [esp + 0x10]
cmp edx, edi
jae 0x51afca
mov al, byte [ebx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
sub edx, dword [esp + 0x94]
jmp 0x51aebd
mov ebx, dword [esp + 0x5c]
cmp ebp, 4
jl 0x51939b
lea eax, [ebp - 0x13]
cmp eax, 0x12
mov edi, ebp
mov eax, 0x12
cmovb edi, eax
cmp byte [esp + 0x6c], 0
cmove edi, ebp
sub ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x3c]
cmp edi, dword [esp + 0x114]
jbe 0x51b20f
jmp 0x51b9ef
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x10]
test esi, esi
jle 0x51b1c6
mov eax, dword [esp + 0x14]
sub eax, edi
cmp eax, 0xfffe
mov ebx, dword [esp + 0x5c]
ja 0x51b1ca
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0xac]
mov edx, dword [eax + 0x40000]
mov esi, dword [eax + 0x40004]
mov dword [esp + 4], esi
sub edx, esi
mov esi, dword [esp + 0x64]
mov esi, dword [eax + esi*4]
add edi, esi
mov dword [esp], edx
sub edi, edx
mov eax, dword [esp + 0x14]
sub eax, edi
cmp eax, 0xffff
jbe 0x51b0e6
jmp 0x51b1ca
bsf edx, eax
shr edx, 3
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x10]
add edx, 4
add eax, edi
cmp edx, ebp
mov ebp, dword [esp + 0x9c]
cmovg ebp, eax
mov dword [esp + 0x9c], ebp
mov ebp, dword [esp + 0x10]
cmovg ebp, edx
movzx eax, si
mov edx, dword [esp + 0xac]
movzx eax, word [edx + eax*2 + 0x20000]
sub esi, eax
sub edi, eax
mov eax, dword [esp + 0x14]
sub eax, edi
cmp eax, 0x10000
jae 0x51b1ca
sub dword [esp + 0x20], 1
jb 0x51b1ca
mov eax, dword [esp + 8]
mov edx, dword [esp + 4]
cmp dword [edx + esi], eax
jne 0x51b0bf
mov dword [esp + 0x10], ebp
mov dword [esp + 0x44], edi
mov edi, dword [esp]
sub edi, esi
add edi, ecx
mov eax, dword [esp + 0x34]
cmp edi, eax
cmova edi, eax
lea ebx, [edx + esi]
add ebx, 4
lea ebp, [edi - 3]
mov edx, dword [esp + 0x94]
cmp ebp, edx
jbe 0x51b13b
mov eax, dword [edx]
xor eax, dword [ebx]
jne 0x51b08a
add ebx, 4
mov edx, dword [esp + 0x60]
cmp edx, ebp
jae 0x51b163
mov eax, dword [esp + 0x68]
add eax, edx
nop word cs:[eax + eax]
nop
mov ecx, dword [edx]
xor ecx, dword [ebx]
jne 0x51b17e
add edx, 4
add ebx, 4
add eax, 4
cmp edx, ebp
jb 0x51b150
lea eax, [edi - 1]
cmp edx, eax
jae 0x51b197
movzx eax, word [ebx]
cmp ax, word [edx]
mov ebp, dword [esp + 0x10]
jne 0x51b19b
add edx, 2
add ebx, 2
jmp 0x51b19b
bsf edx, ecx
shr edx, 3
add edx, eax
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
jmp 0x51b098
mov ebp, dword [esp + 0x10]
cmp edx, edi
jae 0x51b1aa
mov al, byte [ebx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
sub edx, dword [esp + 0x94]
jmp 0x51b0a0
mov ebx, dword [esp + 0x5c]
cmp ebp, dword [esp + 0x88]
jle 0x51939b
lea eax, [ebp - 0x13]
cmp eax, 0x12
mov edi, ebp
mov eax, 0x12
cmovb edi, eax
cmp byte [esp + 0x6c], 0
cmove edi, ebp
test edi, edi
mov edx, dword [esp + 0x3c]
je 0x51b560
sub ecx, dword [esp + 0x9c]
cmp edi, dword [esp + 0x114]
ja 0x51b9ef
mov eax, dword [esp + 0x84]
add eax, edi
cmp eax, 0xfff
jg 0x51b9ef
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0xec]
mov esi, dword [ebx + eax + 0xc]
lea eax, [esi - 0xf]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea ebx, [esi + 1]
cmp esi, 0xf
lea ecx, [edx + esi + 1]
mov dword [esp + 8], esi
mov eax, esi
mov dword [esp + 4], ecx
cmovge eax, ecx
mov esi, dword [esp + 0x80]
sub esi, eax
mov eax, ebx
cmp ebx, 0xe
jle 0x51b281
mov ebp, dword [esp + 8]
lea eax, [ebp - 0xe]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [edx + ebp]
add eax, 2
add eax, esi
cmp eax, dword [esp + 0xe0]
mov ebp, dword [esp + 0x30]
jge 0x51b2c2
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0xf4]
lea ecx, [edx + edi]
mov dword [esp], ecx
mov dword [edx + edi + 8], 1
mov dword [edx + edi + 4], 0
mov dword [edx + edi + 0xc], ebx
mov edi, dword [esp + 0x10]
mov ecx, dword [esp]
mov dword [ecx], eax
mov ecx, dword [esp + 8]
lea ebx, [ecx + 2]
mov eax, ebx
cmp ecx, 0xd
jl 0x51b2ed
mov dword [esp], ebx
mov ebx, dword [esp + 8]
lea eax, [ebx - 0xd]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [ebx + edx]
add eax, 3
mov ebx, dword [esp]
add eax, esi
mov ecx, dword [esp + 0x84]
add ecx, 2
shl ecx, 4
mov edx, dword [esp + 0x5c]
cmp eax, dword [edx + ecx]
jge 0x51b326
mov ebp, dword [esp + 0x5c]
lea edx, [ecx + ebp]
mov dword [ebp + ecx + 8], 1
mov dword [ebp + ecx + 4], 0
mov dword [ebp + ecx + 0xc], ebx
mov ebp, dword [esp + 0x30]
mov dword [edx], eax
mov ecx, dword [esp + 8]
lea eax, [ecx + 3]
mov dword [esp + 0x48], eax
cmp ecx, 0xc
jl 0x51b34d
mov ebx, dword [esp + 8]
lea eax, [ebx - 0xc]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [ebx + edx]
add eax, 4
add eax, esi
mov ecx, dword [esp + 0x84]
add ecx, 3
shl ecx, 4
mov esi, dword [esp + 0x5c]
cmp eax, dword [esi + ecx]
jge 0x51b382
lea edx, [esi + ecx]
mov dword [esi + ecx + 8], 1
mov dword [esi + ecx + 4], 0
mov ebx, dword [esp + 0x48]
mov dword [esi + ecx + 0xc], ebx
mov dword [edx], eax
cmp edi, 3
jg 0x51b3fd
mov edi, dword [esp + 0x3c]
mov eax, edi
shl eax, 4
mov ebx, dword [esp + 0x5c]
mov dword [ebx + eax + 0x18], 1
mov dword [ebx + eax + 0x14], 0
mov dword [ebx + eax + 0x1c], 1
mov ecx, dword [ebx + eax]
lea edx, [ecx + 1]
mov dword [ebx + eax + 0x10], edx
mov dword [ebx + eax + 0x28], 1
mov dword [ebx + eax + 0x24], 0
mov dword [ebx + eax + 0x2c], 2
lea edx, [ecx + 2]
mov dword [ebx + eax + 0x20], edx
mov dword [ebx + eax + 0x38], 1
mov dword [ebx + eax + 0x34], 0
mov dword [ebx + eax + 0x3c], 3
add ecx, 3
mov dword [ebx + eax + 0x30], ecx
mov eax, dword [esp + 0x14]
jmp 0x5193a7
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 8]
sub ecx, eax
shl ecx, 4
add ecx, esi
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 4]
add edx, 3
cmp eax, 0xf
mov ecx, dword [esp + 0x48]
cmovge ecx, edx
mov eax, dword [esp + 0xec]
mov eax, dword [esi + eax + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x48], ecx
lea eax, [ecx + 1]
mov dword [esp + 0x28], eax
neg edi
mov dword [esp + 0x10], edi
mov ebx, 5
mov edi, dword [esp + 0xd4]
jmp 0x51b4af
mov dword [esp + 4], esi
mov esi, dword [esp + 0x3c]
cmp esi, ebp
cmovge ebp, esi
mov dword [esp], eax
mov eax, dword [esp + 0x10]
lea ecx, [eax + ebx]
cmp ecx, 1
cmove esi, ebp
mov dword [esp + 0x3c], esi
mov ecx, dword [esp + 4]
mov dword [edi + 8], ecx
mov ecx, dword [esp + 0x24]
mov dword [edi + 4], ecx
mov ecx, dword [esp]
mov dword [edi + 0xc], ecx
mov dword [edi], edx
mov ebp, dword [esp + 0x30]
add eax, ebx
add eax, 1
add ebx, 1
add edi, 0x10
cmp eax, 2
je 0x51b387
lea esi, [ebx - 1]
mov eax, dword [esp + 0xbc]
lea ebp, [eax + ebx]
cmp dword [esp + 0xc], 1
jne 0x51b510
xor ecx, ecx
mov eax, dword [esp + 8]
cmp dword [esp + 0x84], eax
jle 0x51b4d8
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov edx, dword [esp + 0x48]
cmp esi, 0x13
jb 0x51b4f2
lea eax, [ebx - 0x14]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, dword [esp + 0x28]
add edx, ecx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x3c]
add ecx, 3
cmp ebp, ecx
jg 0x51b460
jmp 0x51b542
mov edx, 3
cmp esi, 0x13
jb 0x51b52a
lea eax, [ebx - 0x14]
mov ecx, 0x80808081
mul ecx
shr edx, 7
add edx, 4
add edx, dword [esp + 0x80]
xor eax, eax
mov ecx, dword [esp + 0x3c]
add ecx, 3
cmp ebp, ecx
jg 0x51b460
mov ecx, dword [edi]
add ecx, dword [esp + 0x118]
cmp edx, ecx
jle 0x51b460
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
jmp 0x51b49b
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x30]
mov edi, edx
jmp 0x5193a7
mov eax, edi
shl eax, 4
mov ecx, dword [ebx + eax + 4]
mov edx, edi
mov edi, dword [ebx + eax + 8]
mov ebp, edx
sub ebp, edi
mov dword [esp + 0xa0], edx
nop dword [eax]
mov eax, ebp
shl eax, 4
mov esi, dword [ebx + eax + 4]
mov edx, dword [ebx + eax + 8]
mov dword [ebx + eax + 8], edi
mov dword [ebx + eax + 4], ecx
mov edi, edx
mov ecx, esi
sub ebp, edx
jge 0x51b590
mov edi, dword [esp + 0xa0]
test edi, edi
jle 0x51b8b3
xor esi, esi
mov edx, dword [esp + 0x38]
mov dword [esp + 0xa0], edi
jmp 0x51b5db
add dword [esp + 0x58], 1
add esi, 1
cmp esi, edi
jge 0x51b9c6
mov ecx, esi
shl ecx, 4
mov eax, dword [ebx + ecx + 8]
cmp eax, 1
je 0x51b5cb
mov dword [esp + 0x3c], eax
mov ebp, dword [esp + 0x58]
mov dword [esp + 0x38], edx
sub ebp, edx
mov eax, ebp
mov edx, 0x80808081
mul edx
mov eax, dword [ebx + ecx + 4]
mov ecx, ebp
mov dword [esp + 4], eax
cmp dword [esp + 0xa8], 0
mov ebx, dword [esp + 0x7c]
je 0x51b630
shr edx, 7
add edx, ebx
lea eax, [ecx + edx]
add eax, 9
cmp eax, dword [esp + 0xcc]
ja 0x51b9fb
mov dword [esp], esi
lea esi, [ebx + 1]
cmp ecx, 0xf
mov dword [esp + 0x10], ecx
jb 0x51b690
lea eax, [ecx - 0xf]
mov byte [ebx], 0xf0
cmp eax, 0xff
jb 0x51b689
lea eax, [ecx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, edi
shl eax, 8
lea esi, [ebx + edi]
add esi, 2
sub edi, eax
lea eax, [ecx + edi]
add eax, 0xfffffef2
mov byte [esi], al
add esi, 1
jmp 0x51b697
mov eax, ecx
shl al, 4
mov byte [ebx], al
mov eax, dword [esp + 0x58]
lea ebx, [esi + eax]
mov edx, dword [esp + 0x38]
sub ebx, edx
mov eax, esi
add esi, 8
cmp ebx, esi
mov edi, esi
cmova edi, ebx
lea ebp, [eax + ecx]
mov ecx, eax
not ecx
mov dword [esp + 8], ecx
add edi, ecx
mov ecx, eax
mov dword [esp + 0xc], edi
cmp edi, 0x18
mov edi, eax
jb 0x51b791
cmp ebx, esi
cmova esi, ebx
add esi, dword [esp + 8]
and esi, 0xfffffff8
mov eax, dword [esp + 0x38]
add eax, esi
add eax, 8
cmp edi, eax
jae 0x51b6fd
lea eax, [edi + esi]
add eax, 8
mov esi, dword [esp + 0x38]
mov edx, esi
mov ecx, edi
cmp esi, eax
jb 0x51b791
mov esi, edi
mov ebx, dword [esp + 0xc]
shr ebx, 3
add ebx, 1
mov eax, ebx
and eax, 0xfffffffc
mov dword [esp + 8], eax
add eax, 0xfffffffc
mov ecx, eax
shr ecx, 2
add ecx, 1
test eax, eax
je 0x51b760
mov edx, ecx
and edx, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x38]
nop dword [eax]
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [esi + edi*8], xmm0
movups xmmword [esi + edi*8 + 0x10], xmm1
movups xmm0, xmmword [eax + edi*8 + 0x20]
movups xmm1, xmmword [eax + edi*8 + 0x30]
movups xmmword [esi + edi*8 + 0x20], xmm0
movups xmmword [esi + edi*8 + 0x30], xmm1
add edi, 8
add edx, 0xfffffffe
jne 0x51b730
jmp 0x51b766
xor edi, edi
mov eax, dword [esp + 0x38]
test cl, 1
je 0x51b77d
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [esi + edi*8], xmm0
movups xmmword [esi + edi*8 + 0x10], xmm1
mov ecx, dword [esp + 8]
cmp ebx, ecx
je 0x51b7b2
mov eax, dword [esp + 0x38]
lea edx, [eax + ecx*8]
lea ecx, [esi + ecx*8]
mov edi, esi
mov esi, edi
nop word cs:[eax + eax]
nop dword [eax]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, ebp
jb 0x51b7a0
mov eax, dword [esp + 0x3c]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
mov eax, dword [esp + 4]
mov word [ebp], ax
cmp dword [esp + 0xa8], 0
mov ebx, dword [esp + 0x7c]
je 0x51b7ee
shr edx, 7
lea eax, [edx + ebp]
add eax, 8
cmp eax, dword [esp + 0xcc]
ja 0x51b9fb
add ebp, 2
mov al, byte [ebx]
cmp ecx, 0xf
jb 0x51b87c
add al, 0xf
mov byte [ebx], al
mov edx, dword [esp + 0x3c]
lea eax, [edx - 0x13]
cmp eax, 0x1fe
jb 0x51b853
lea eax, [edx - 0x211]
mov ecx, 0x80808081
mov ebx, edx
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x10]
lea eax, [eax + edi*2]
lea ebp, [esi + eax]
add ebp, 4
imul eax, edi, 0xfffffe02
mov edx, ebx
add eax, ebx
add eax, 0xfffffdef
mov ebx, dword [esp + 0x5c]
cmp eax, 0xff
mov edi, dword [esp + 0xa0]
mov esi, dword [esp]
jb 0x51b874
add eax, 0xffffff01
mov byte [ebp], 0xff
add ebp, 1
mov byte [ebp], al
add ebp, 1
jmp 0x51b892
add al, cl
mov byte [ebx], al
mov ebx, dword [esp + 0x5c]
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0xa0]
mov esi, dword [esp]
add esi, edx
mov ecx, dword [esp + 0x58]
add ecx, edx
mov eax, ecx
mov dword [esp + 0x58], ecx
mov edx, ecx
mov dword [esp + 0x7c], ebp
cmp esi, edi
jl 0x51b5db
jmp 0x51b9c6
mov edx, dword [esp + 0x38]
jmp 0x51b9c6
xor edi, edi
mov eax, dword [esp + 0x38]
test dl, 1
je 0x51b8d9
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [ebx + edi*8], xmm0
movups xmmword [ebx + edi*8 + 0x10], xmm1
cmp dword [esp], ecx
je 0x51b902
mov eax, dword [esp + 0x38]
lea edx, [eax + ecx*8]
lea ecx, [ebx + ecx*8]
mov edi, ebx
mov ebx, edi
nop dword [eax]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, esi
jb 0x51b8f0
mov eax, dword [esp + 0x3c]
lea ecx, [eax - 4]
mov eax, ecx
mov edi, 0x80808081
mul edi
mov eax, dword [esp + 4]
mov word [esi], ax
cmp dword [esp + 0xa8], 0
je 0x51b939
shr edx, 7
lea eax, [esi + edx]
add eax, 8
cmp eax, dword [esp + 0xcc]
ja 0x51b9fb
add esi, 2
mov edx, dword [esp + 0x7c]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x51b9ae
add al, 0xf
mov byte [edx], al
mov ebp, dword [esp + 0x3c]
lea eax, [ebp - 0x13]
cmp eax, 0x1fe
jb 0x51b995
lea eax, [ebp - 0x211]
mul edi
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x30]
lea eax, [eax + edi*2]
lea esi, [ebx + eax]
add esi, 4
imul eax, edi, 0xfffffe02
add eax, ebp
add eax, 0xfffffdef
cmp eax, 0xff
jb 0x51b9a7
add eax, 0xffffff01
mov byte [esi], 0xff
add esi, 1
mov byte [esi], al
add esi, 1
jmp 0x51b9b2
add al, cl
mov byte [edx], al
mov ecx, dword [esp + 0x58]
add ecx, dword [esp + 0x3c]
mov eax, ecx
mov dword [esp + 0x58], ecx
mov edx, ecx
mov dword [esp + 0x7c], esi
mov eax, dword [esp + 0xd8]
cmp dword [esp + 0x58], eax
ja 0x51bade
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 0x40004]
mov ebx, 0xffff
jmp 0x518093
mov ebp, dword [esp + 0x84]
jmp 0x51b590
mov esi, dword [esp + 0xc4]
xor ebx, ebx
cmp dword [esp + 0xa8], 2
mov edi, dword [esp + 0xcc]
jne 0x51bd0e
mov ebx, dword [esp + 0x58]
sub ebx, dword [esp + 0x38]
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
add edx, ebx
lea ecx, [edi - 3]
mov eax, dword [esp + 0x7c]
add eax, edx
add eax, 1
cmp eax, ecx
ja 0x51baca
sub ecx, eax
mov edx, ecx
shl edx, 8
sub edx, ecx
add edx, 0x12
mov ecx, dword [esp + 0x3c]
cmp ecx, edx
cmovbe edx, ecx
add eax, 2
not eax
add eax, edi
add eax, edx
add eax, 5
cmp eax, 0xc
jl 0x51baca
mov esi, dword [esp + 0x7c]
lea ebp, [esi + 1]
cmp ebx, 0xf
mov dword [esp], edx
jb 0x51baf5
lea eax, [ebx - 0xf]
mov byte [esi], 0xf0
cmp eax, 0xff
jb 0x51bac2
lea eax, [ebx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
lea ebp, [edi + esi]
add ebp, 2
sub edi, eax
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov byte [ebp], al
add ebp, 1
jmp 0x51bafc
mov ebp, dword [esp + 0xdc]
mov edi, dword [esp + 0x7c]
mov edx, dword [esp + 0x38]
jmp 0x51bbfd
mov esi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xdc]
mov edi, dword [esp + 0x7c]
jmp 0x51bbfd
mov eax, ebx
shl al, 4
mov byte [esi], al
mov eax, dword [esp + 0x58]
lea edx, [eax + ebp]
sub edx, dword [esp + 0x38]
lea edi, [ebp + 8]
cmp edx, edi
mov eax, edi
cmova eax, edx
lea ecx, [ebx + ebp]
mov esi, ebp
not esi
add eax, esi
cmp eax, 0x18
jb 0x51bb46
cmp edx, edi
cmova edi, edx
lea edx, [edi + esi]
add edx, 8
and edx, 0xfffffff8
mov edi, dword [esp + 0x38]
lea esi, [edi + edx]
cmp ebp, esi
jae 0x51bd5d
add edx, ebp
cmp edi, edx
jae 0x51bd5d
mov eax, ebp
mov edi, dword [esp]
mov edx, dword [esp + 0x38]
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ecx
jb 0x51bb4f
mov eax, dword [esp + 4]
mov word [ecx], ax
add ecx, 2
lea edx, [edi - 4]
mov esi, dword [esp + 0x7c]
mov al, byte [esi]
cmp edx, 0xf
jb 0x51bbe1
add al, 0xf
mov byte [esi], al
lea eax, [edi - 0x13]
cmp eax, 0x1fe
jb 0x51bbc8
lea eax, [edi - 0x211]
mov edx, 0x80808081
mul edx
mov esi, edi
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebx + edi*2]
lea ecx, [eax + ebp]
add ecx, 4
imul eax, edi, 0xfffffe02
mov edi, esi
add eax, esi
add eax, 0xfffffdef
cmp eax, 0xff
jb 0x51bbda
add eax, 0xffffff01
mov byte [ecx], 0xff
add ecx, 1
mov byte [ecx], al
add ecx, 1
jmp 0x51bbe5
add al, dl
mov byte [esi], al
mov eax, dword [esp + 0x58]
add eax, edi
mov edx, eax
mov edi, ecx
mov esi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xdc]
add ebp, esi
xor ecx, ecx
mov esi, dword [esp + 0xa8]
cmp esi, 2
sete bl
mov dword [esp + 0x38], edx
sub ebp, edx
lea eax, [ebp + 0xf0]
mov edx, 0x80808081
mul edx
test esi, esi
je 0x51bc68
shr edx, 7
add edx, ebp
mov cl, bl
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0xcc]
add ecx, eax
lea eax, [edi + edx]
add eax, 1
cmp eax, ecx
jbe 0x51bc68
mov ebx, 0
cmp dword [esp + 0xa8], 1
je 0x51bd0e
mov eax, edi
not eax
lea ebp, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub ebp, eax
mov eax, dword [esp + 0x38]
lea esi, [eax + ebp]
cmp ebp, 0xf
mov ebx, ebp
jb 0x51bcc5
lea eax, [ebx - 0xf]
mov byte [edi], 0xf0
lea ecx, [edi + 1]
cmp eax, 0xff
jb 0x51bcd7
mov ebp, edi
lea eax, [ebx - 0x10e]
mov edx, 0x80808081
mul edx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
lea ecx, [edi + ebp]
add ecx, 2
sub edi, eax
mov edx, ebx
lea eax, [ebx + edi]
add eax, 0xfffffef2
jmp 0x51bcd9
mov eax, ebx
shl al, 4
mov ebp, edi
mov byte [edi], al
mov edi, dword [esp + 0xc4]
jmp 0x51bce6
mov edx, ebx
mov edi, dword [esp + 0xc4]
mov byte [ecx], al
mov ebp, ecx
mov ebx, edx
lea eax, [ebp + 1]
push ebx
push dword [esp + 0x3c]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add ebx, ebp
add ebx, 1
sub esi, edi
mov eax, dword [esp + 0x11c]
mov dword [eax], esi
sub ebx, dword [esp + 0x120]
push dword [esp + 0x5c]
call fcn.004f5d7c
add esp, 4
test ebx, ebx
jg 0x51c04e
jmp 0x51c043
mov eax, dword [esp + 0x38]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x54], eax
mov ebp, dword [esp + 0x7c]
jmp 0x51bdea
mov eax, dword [esp + 0x38]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x54], eax
mov ebp, edi
jmp 0x51be26
shr eax, 3
add eax, 1
mov edx, eax
and edx, 0xfffffffc
mov dword [esp + 8], edx
add edx, 0xfffffffc
mov esi, edx
shr esi, 2
add esi, 1
test edx, edx
mov dword [esp + 0x10], esi
je 0x51c05b
mov edx, esi
and edx, 0xfffffffe
xor edi, edi
mov esi, dword [esp + 0x38]
movups xmm0, xmmword [esi + edi]
movups xmm1, xmmword [esi + edi + 0x10]
movups xmmword [ebp + edi], xmm0
movups xmmword [ebp + edi + 0x10], xmm1
movups xmm0, xmmword [esi + edi + 0x20]
movups xmm1, xmmword [esi + edi + 0x30]
movups xmmword [ebp + edi + 0x20], xmm0
movups xmmword [ebp + edi + 0x30], xmm1
add edi, 0x40
add edx, 0xfffffffe
jne 0x51bd8e
jmp 0x51c05d
mov dword [esp + 0x60], edi
mov eax, dword [esp + 4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x80]
mov ebp, dword [esp + 0x8c]
mov dword [esp + 0x50], esi
jmp 0x51be35
mov eax, dword [esp + 0x64]
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], ecx
jmp 0x51be31
mov eax, dword [esp + 0x64]
mov dword [esp + 0x54], eax
jmp 0x51be26
mov eax, dword [esp + 0x64]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x74]
mov ebp, dword [esp + 0xc0]
jmp 0x51be35
mov eax, dword [esp + 0x64]
mov dword [esp + 0x54], eax
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x74]
xor ebx, ebx
cmp dword [esp + 0xa8], 2
mov esi, dword [esp + 0xc8]
jne 0x51c043
mov dword [esp + 0x74], eax
mov ebx, dword [esp + 0x60]
sub ebx, dword [esp + 0x54]
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
add edx, ebx
lea ecx, [esi - 3]
mov eax, dword [esp + 0x50]
add eax, edx
add eax, 1
cmp eax, ecx
ja 0x51bf08
sub ecx, eax
mov edx, ecx
shl edx, 8
sub edx, ecx
add edx, 0x12
cmp ebp, edx
cmovbe edx, ebp
add eax, 2
not eax
add eax, esi
add eax, edx
add eax, 5
cmp eax, 0xc
jl 0x51bf08
mov ecx, dword [esp + 0x50]
lea esi, [ecx + 1]
cmp ebx, 0xf
mov dword [esp + 4], edx
jb 0x51c0a3
lea eax, [ebx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x51befe
lea eax, [ebx - 0x10e]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
mov ecx, dword [esp + 0x50]
lea esi, [edi + ecx]
add esi, 2
sub edi, eax
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov byte [esi], al
add esi, 1
jmp 0x51c0aa
mov esi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xdc]
mov ebx, dword [esp + 0x54]
add ebp, esi
xor ecx, ecx
mov edi, dword [esp + 0xa8]
cmp edi, 2
sete byte [esp + 4]
mov dword [esp + 0x54], ebx
sub ebp, ebx
lea eax, [ebp + 0xf0]
mov edx, 0x80808081
mul edx
test edi, edi
mov edi, esi
je 0x51bf96
shr edx, 7
add edx, ebp
mov al, byte [esp + 4]
mov cl, al
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0xc8]
add ecx, eax
mov eax, dword [esp + 0x50]
add eax, edx
add eax, 1
cmp eax, ecx
jbe 0x51bf96
xor ebx, ebx
cmp dword [esp + 0xa8], 1
je 0x51c043
mov eax, dword [esp + 0x50]
not eax
lea ebp, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub ebp, eax
mov edi, dword [esp + 0xc4]
mov ecx, dword [esp + 0x54]
lea esi, [ecx + ebp]
cmp ebp, 0xf
mov ebx, ebp
jb 0x51bffd
lea eax, [ebx - 0xf]
mov ebp, dword [esp + 0x50]
mov byte [ebp], 0xf0
lea ecx, [ebp + 1]
cmp eax, 0xff
jb 0x51c00c
lea eax, [ebx - 0x10e]
mov edx, 0x80808081
mul edx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
lea ecx, [edi + ebp]
add ecx, 2
sub edi, eax
mov edx, ebx
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov edi, dword [esp + 0xc4]
jmp 0x51c00e
mov eax, ebx
shl al, 4
mov edx, dword [esp + 0x50]
mov byte [edx], al
mov eax, edx
jmp 0x51c018
mov edx, ebx
mov byte [ecx], al
mov eax, ecx
mov ebx, edx
mov ecx, dword [esp + 0x54]
mov ebp, eax
add eax, 1
push ebx
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add ebx, ebp
add ebx, 1
sub esi, edi
mov eax, dword [esp + 0x11c]
mov dword [eax], esi
sub ebx, dword [esp + 0x120]
test ebx, ebx
jg 0x51c04e
mov eax, dword [esp + 0x18]
mov byte [eax + 0x4001b], 1
mov eax, ebx
add esp, 0x12c
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
test byte [esp + 0x10], 1
je 0x51c07b
mov edx, dword [esp + 0x38]
movups xmm0, xmmword [edx + edi]
movups xmm1, xmmword [edx + edi + 0x10]
movups xmmword [ebp + edi], xmm0
movups xmmword [ebp + edi + 0x10], xmm1
mov edx, dword [esp + 8]
cmp eax, edx
mov eax, dword [esp + 0x38]
mov edi, dword [esp]
je 0x51bb61
lea eax, [eax + edx*8]
mov dword [esp + 0x38], eax
lea eax, [edx*8]
add eax, ebp
jmp 0x51bb4b
mov eax, ebx
shl al, 4
mov byte [ecx], al
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x54], ecx
mov eax, dword [esp + 0x60]
lea edx, [eax + esi]
sub edx, ecx
lea edi, [esi + 8]
cmp edx, edi
mov eax, edi
cmova eax, edx
lea ecx, [esi + ebx]
mov ebp, esi
not ebp
add eax, ebp
cmp eax, 0x18
jb 0x51c0fb
cmp edx, edi
cmova edi, edx
lea edx, [edi + ebp]
add edx, 8
and edx, 0xfffffff8
mov edi, dword [esp + 0x54]
add edi, edx
cmp esi, edi
jae 0x51c1cb
add edx, esi
cmp dword [esp + 0x54], edx
jae 0x51c1cb
mov eax, esi
mov edx, dword [esp + 0x54]
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ecx
jb 0x51c101
mov eax, dword [esp + 0x60]
mov dword [esp + 0x60], eax
sub eax, dword [esp + 0x74]
mov word [ecx], ax
add ecx, 2
mov edx, dword [esp + 4]
lea edi, [edx - 4]
mov ebp, dword [esp + 0x50]
mov al, byte [ebp]
mov dword [esp], edi
cmp edi, 0xf
jb 0x51c1a8
add al, 0xf
mov byte [ebp], al
lea eax, [edx - 0x13]
cmp eax, 0x1fe
jb 0x51c18b
lea eax, [edx - 0x211]
mov edx, 0x80808081
mul edx
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x10]
add esp, 0xc
lea eax, [ebx + edi*2]
lea ecx, [esi + eax]
add ecx, 4
imul eax, edi, 0xfffffe02
add eax, edx
add eax, 0xfffffdef
cmp eax, 0xff
mov ebx, dword [esp + 0x60]
jb 0x51c1a1
add eax, 0xffffff01
mov byte [ecx], 0xff
add ecx, 1
mov byte [ecx], al
add ecx, 1
jmp 0x51c1b2
add al, byte [esp]
mov byte [ebp], al
mov ebx, dword [esp + 0x60]
add ebx, edx
mov dword [esp + 0x50], ecx
mov esi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xdc]
jmp 0x51bf1a
shr eax, 3
add eax, 1
mov edx, eax
and edx, 0xfffffffc
mov dword [esp + 8], edx
add edx, 0xfffffffc
mov edi, edx
shr edi, 2
add edi, 1
mov dword [esp], edi
test edx, edx
je 0x51c229
mov edx, dword [esp]
and edx, 0xfffffffe
xor edi, edi
mov ebp, dword [esp + 0x54]
movups xmm0, xmmword [ebp + edi]
movups xmm1, xmmword [ebp + edi + 0x10]
movups xmmword [esi + edi], xmm0
movups xmmword [esi + edi + 0x10], xmm1
movups xmm0, xmmword [ebp + edi + 0x20]
movups xmm1, xmmword [ebp + edi + 0x30]
movups xmmword [esi + edi + 0x20], xmm0
movups xmmword [esi + edi + 0x30], xmm1
add edi, 0x40
add edx, 0xfffffffe
jne 0x51c1f8
jmp 0x51c22b
xor edi, edi
test byte [esp], 1
je 0x51c247
mov edx, dword [esp + 0x54]
movups xmm0, xmmword [edx + edi]
movups xmm1, xmmword [edx + edi + 0x10]
movups xmmword [esi + edi], xmm0
movups xmmword [esi + edi + 0x10], xmm1
cmp eax, dword [esp + 8]
mov eax, dword [esp + 0x54]
je 0x51c113
mov edx, dword [esp + 8]
lea eax, [eax + edx*8]
mov dword [esp + 0x54], eax
lea eax, [esi + edx*8]
jmp 0x51c0fd