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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x118
mov dword [esp + 0x74], edx
mov dword [esp + 0x4c], ecx
mov esi, dword [esp + 0x134]
xor edi, edi
test esi, esi
jg 0x50cd9d
cmp dword [esp + 0x13c], 2
je 0x513b1a
mov eax, dword [esp + 0x130]
mov eax, dword [eax]
cmp eax, 0x7e000000
ja 0x513b1a
mov edi, eax
mov eax, dword [esp + 0x138]
mov ecx, dword [esp + 0x4c]
add dword [ecx + 0x40000], edi
test eax, eax
mov edx, 9
cmovg edx, eax
cmp edx, 0xc
mov ecx, 0xc
mov dword [esp + 0xe4], edx
cmovb ecx, edx
mov edx, dword [esp + 0x12c]
lea ebx, [ecx + ecx*2]
mov eax, dword [ebx*4 + 0x687784]
mov dword [esp + 0x10c], eax
cmp ecx, 9
mov dword [esp + 0xf4], edi
ja 0x51024e
xor eax, eax
cmp dword [esp + 0x13c], 2
setne al
mov ebx, 0x1a00
shr ebx, cl
mov dword [esp + 0xac], ebx
add esi, edx
mov ecx, dword [esp + 0x130]
mov dword [ecx], 0
lea eax, [eax + eax*4]
add eax, esi
add eax, 0xfffffffb
mov dword [esp + 0xc4], eax
mov ecx, dword [esp + 0x74]
mov esi, ecx
mov ebx, edx
cmp edi, 0xd
jb 0x5136c0
mov eax, edx
lea edx, [ecx + edi]
add edx, 0xfffffff4
mov esi, ecx
mov ebx, eax
mov dword [esp + 0xcc], edx
cmp edx, ecx
jb 0x5136c0
lea edx, [ecx + edi]
add edx, 0xfffffffb
lea esi, [edx - 3]
mov dword [esp + 8], esi
mov dword [esp + 0x20], edx
add edx, 0xffffffff
mov dword [esp + 0xdc], edx
lea edx, [edi + ecx - 5]
mov dword [esp + 0xe8], edx
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0x64], 0
xor edx, edx
mov dword [esp + 0x9c], eax
mov eax, ecx
mov ecx, dword [esp + 0x4c]
mov esi, dword [ecx + 0x40004]
mov ebx, dword [ecx + 0x4000c]
mov edi, dword [ecx + 0x40010]
mov ebp, esi
not ebp
add ebp, eax
mov dword [esp + 0x7c], ebp
mov ebp, 0xfffffffc
sub ebp, eax
mov dword [esp + 0x90], ebp
mov ebp, edi
sub ebp, ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x1c], edx
mov edx, dword [ecx + 0x40008]
lea ebp, [esi + ebx]
mov dword [esp + 0x2c], ebp
lea ebp, [edi + 0x10000]
mov dword [esp + 0xd0], ebp
lea ebp, [ebx - 4]
mov dword [esp + 0x38], ebp
lea ebp, [edx + edi]
mov dword [esp + 0xe4], ebp
mov dword [esp + 0x44], esi
lea esi, [esi + ebx + 4]
mov dword [esp + 0x100], esi
lea esi, [edx + ebx]
mov dword [esp + 0xb0], esi
mov dword [esp + 0xd8], edi
lea esi, [edx + edi + 4]
mov dword [esp + 0xd4], esi
mov ecx, dword [ecx + 0x40014]
lea esi, [ebx + eax]
mov dword [esp + 0x80], esi
lea esi, [eax + 4]
mov dword [esp + 0x68], esi
mov dword [esp + 0x60], edx
lea edx, [edx + ebx - 1]
mov dword [esp + 0xec], edx
mov dword [esp + 0x70], 0
mov dword [esp + 0x78], eax
mov edx, eax
mov edi, 0xffff
mov dword [esp + 0x24], ebx
jmp 0x50cfd0
mov edx, esi
add edx, 1
add dword [esp + 0x70], 1
add dword [esp + 0x90], 0xffffffff
add dword [esp + 0x80], 1
add dword [esp + 0x68], 1
mov ecx, dword [esp + 0x28]
cmp edx, dword [esp + 0xcc]
ja 0x5136aa
mov eax, edx
mov esi, dword [esp + 0x44]
sub eax, esi
lea ebx, [eax - 0xffff]
cmp dword [esp + 0xd0], eax
cmova ebx, dword [esp + 0xd8]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], edx
mov edx, dword [edx]
mov dword [esp + 0xc], edx
mov edx, eax
cmp ecx, eax
mov dword [esp + 0x28], eax
jae 0x50d0dc
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x70]
lea edx, [eax + ebx]
mov eax, dword [esp + 0x78]
add ebx, eax
sub ebx, ecx
sub ebx, esi
mov eax, ecx
test bl, 1
je 0x50d05b
mov eax, dword [esp + 0x44]
imul eax, dword [eax + ecx], 0x9e3779b1
shr eax, 0x11
mov esi, ecx
mov ebx, dword [esp + 0x4c]
sub esi, dword [ebx + eax*4]
cmp esi, 0xffff
cmovae esi, edi
movzx edi, cx
mov word [ebx + edi*2 + 0x20000], si
mov edi, 0xffff
mov dword [ebx + eax*4], ecx
lea eax, [ecx + 1]
cmp edx, ecx
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0x28]
je 0x50d0dc
add eax, 1
nop word [eax + eax]
lea ecx, [eax - 1]
imul edx, dword [ebp + eax - 1], 0x9e3779b1
shr edx, 0x11
mov ebx, dword [esp + 0x4c]
mov esi, dword [ebx + edx*4]
not esi
add esi, eax
cmp esi, 0xffff
cmovae esi, edi
movzx edi, cx
mov word [ebx + edi*2 + 0x20000], si
mov edi, 0xffff
mov dword [ebx + edx*4], ecx
imul ecx, dword [ebp + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebx + ecx*4]
cmp edx, 0xffff
cmovae edx, edi
movzx esi, ax
mov word [ebx + esi*2 + 0x20000], dx
mov edx, dword [esp + 0x28]
mov dword [ebx + ecx*4], eax
lea ecx, [eax + 2]
add eax, 1
cmp eax, edx
mov eax, ecx
jb 0x50d070
mov ebp, dword [esp + 0x4c]
mov dword [ebp + 0x40014], edx
mov esi, dword [esp + 0x18]
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov ebx, dword [esp + 0xc]
movzx ecx, bx
mov edx, ebx
shr edx, 0x10
xor edx, ecx
movzx ecx, bl
shr ebx, 0x18
mov dword [esp + 0x84], ebx
xor ecx, ebx
or ecx, edx
mov ecx, dword [ebp + eax*4]
sete byte [esp + 0x94]
cmp ecx, dword [esp + 0x10]
jb 0x50cfa0
lea eax, [esi + 4]
mov dword [esp + 0xa8], eax
lea eax, [esi + 8]
mov dword [esp + 0x8c], eax
mov eax, esi
neg eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x34], eax
xor ebx, ebx
mov edx, esi
mov esi, 3
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [esp + 0x24]
sub edi, ecx
mov dword [esp + 4], ecx
jbe 0x50d240
cmp ecx, dword [esp + 0x38]
ja 0x50d490
mov eax, dword [esp + 0x60]
add eax, ecx
mov ecx, dword [esp + 0xc]
cmp dword [eax], ecx
jne 0x50d490
lea ecx, [edx + edi]
mov edx, dword [esp + 0x20]
cmp ecx, edx
mov ebp, ecx
cmova ebp, edx
add eax, 4
mov dword [esp + 0x30], ebp
add ebp, 0xfffffffd
mov edx, dword [esp + 0xa8]
cmp ebp, edx
mov dword [esp], esi
mov dword [esp + 0x50], edi
jbe 0x50d2a4
mov edx, dword [edx]
xor edx, dword [eax]
je 0x50d29a
bsf edx, edx
shr edx, 3
mov edi, dword [esp + 0x20]
lea eax, [edx + 4]
cmp ecx, edi
jae 0x50d317
mov esi, dword [esp + 0x18]
lea ecx, [esi + edx]
add ecx, 4
mov edi, dword [esp + 0x30]
cmp ecx, edi
jne 0x50d32c
mov ebp, dword [esp + 0x2c]
mov edx, ebp
mov ecx, edi
cmp dword [esp + 8], edi
mov esi, dword [esp]
jbe 0x50d3bb
mov ecx, dword [edi]
xor ecx, dword [ebp]
je 0x50d3b1
bsf ecx, ecx
shr ecx, 3
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
add eax, ecx
cmp eax, esi
jg 0x50d474
jmp 0x50d490
mov eax, dword [esp + 0x44]
add ecx, eax
movzx eax, word [edx + esi - 1]
cmp ax, word [esi + ecx - 1]
jne 0x50d490
mov eax, dword [esp + 0xc]
cmp dword [ecx], eax
jne 0x50d490
lea edx, [ecx + 4]
mov eax, dword [esp + 0xa8]
cmp dword [esp + 8], eax
jbe 0x50d34c
mov eax, dword [eax]
xor eax, dword [edx]
je 0x50d342
bsf eax, eax
shr eax, 3
mov edx, dword [esp + 0x18]
add eax, 4
cmp eax, esi
jg 0x50d47e
jmp 0x50d490
add eax, 4
mov edx, dword [esp + 0x8c]
cmp edx, ebp
jae 0x50d2d3
mov esi, dword [esp + 0x90]
lea edi, [esi + edx]
nop word cs:[eax + eax]
nop dword [eax]
mov esi, dword [edx]
xor esi, dword [eax]
jne 0x50d2fd
add edx, 4
add eax, 4
add edi, 4
cmp edx, ebp
jb 0x50d2c0
mov esi, dword [esp + 0x30]
add esi, 0xffffffff
cmp edx, esi
jae 0x50da16
movzx esi, word [eax]
cmp si, word [edx]
mov edi, dword [esp + 0x20]
jne 0x50da1a
add edx, 2
add eax, 2
jmp 0x50da1a
bsf edx, esi
shr edx, 3
add edx, edi
mov edi, dword [esp + 0x20]
mov esi, dword [esp]
lea eax, [edx + 4]
cmp ecx, edi
jb 0x50d1e9
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
cmp eax, esi
jle 0x50d490
jmp 0x50d474
mov edx, esi
mov esi, dword [esp]
mov edi, dword [esp + 0x50]
cmp eax, esi
jg 0x50d474
jmp 0x50d490
add edx, 4
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x50], edi
mov dword [esp], esi
cmp eax, dword [esp + 8]
jae 0x50d389
mov esi, dword [esp + 0x90]
lea edi, [esi + eax]
nop word cs:[eax + eax]
nop dword [eax]
mov esi, dword [eax]
xor esi, dword [edx]
jne 0x50d43f
add eax, 4
add edx, 4
add edi, 4
cmp eax, dword [esp + 8]
jb 0x50d370
cmp eax, dword [esp + 0xdc]
jae 0x50da57
movzx esi, word [edx]
cmp si, word [eax]
mov edi, dword [esp + 0x20]
jne 0x50da5b
add eax, 2
add edx, 2
jmp 0x50da5b
lea ecx, [edi + 4]
mov edx, dword [esp + 0x100]
cmp ecx, dword [esp + 8]
jae 0x50d3f5
mov esi, dword [esp + 0x80]
sub esi, dword [esp + 4]
mov ebp, dword [esp + 0xe8]
cmp ebp, esi
cmovb esi, ebp
mov ebp, ecx
sub ebp, esi
nop dword [eax]
mov esi, dword [ecx]
xor esi, dword [edx]
jne 0x50d45b
add ecx, 4
add edx, 4
add ebp, 4
cmp ecx, dword [esp + 8]
jb 0x50d3e0
cmp ecx, dword [esp + 0xdc]
jae 0x50d40c
movzx esi, word [edx]
cmp si, word [ecx]
jne 0x50d40c
add ecx, 2
add edx, 2
mov esi, dword [esp]
cmp ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x50]
jae 0x50d42f
mov dl, byte [edx]
mov byte [esp + 0x3c], dl
mov dl, byte [esp + 0x3c]
cmp dl, byte [ecx]
mov edx, 0
sete dl
add ecx, edx
mov edx, dword [esp + 0x18]
sub ecx, dword [esp + 0x30]
add eax, ecx
cmp eax, esi
jg 0x50d474
jmp 0x50d490
bsf eax, esi
shr eax, 3
add eax, edi
mov edx, dword [esp + 0x18]
mov esi, dword [esp]
mov edi, dword [esp + 0x50]
add eax, 4
cmp eax, esi
jg 0x50d47e
jmp 0x50d490
bsf ecx, esi
shr ecx, 3
add ecx, ebp
mov edx, dword [esp + 0x18]
mov esi, dword [esp]
mov edi, dword [esp + 0x50]
add eax, ecx
cmp eax, esi
jle 0x50d490
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x44]
add ecx, esi
mov dword [esp + 0x1c], ecx
mov esi, eax
nop word cs:[eax + eax]
nop
movzx eax, word [esp + 4]
mov ecx, dword [esp + 0x4c]
movzx eax, word [ecx + eax*2 + 0x20000]
test byte [esp + 0xac], 1
je 0x50d690
cmp ax, 1
jne 0x50d690
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 4]
je 0x50d4f8
cmp dword [esp + 0x14], 2
jne 0x50d694
mov dword [esp], esi
lea ebp, [ecx - 1]
mov dword [esp + 0x30], ebp
cmp ebp, dword [esp + 0x10]
jb 0x50d4f0
mov dword [esp + 0x14], 2
cmp edi, 3
jae 0x50d592
mov esi, dword [esp]
jmp 0x50d694
mov dword [esp + 0x14], 1
cmp byte [esp + 0x94], 0
je 0x50d694
mov ebx, dword [esp + 0x68]
mov edx, dword [esp + 0xa8]
mov ecx, edx
cmp dword [esp + 8], edx
jbe 0x50da97
nop word cs:[eax + eax]
nop
mov edx, dword [ecx]
xor edx, dword [esp + 0xc]
jne 0x50d657
add ecx, 4
add ebx, 4
cmp ecx, dword [esp + 8]
jb 0x50d530
mov edx, dword [esp + 0x20]
cmp ecx, edx
jae 0x50d65f
mov dword [esp + 0x50], edi
mov edi, esi
sub edx, ebx
lea esi, [ecx + edx]
mov ebx, dword [esp + 0xc]
nop word cs:[eax + eax]
nop dword [eax]
cmp byte [ecx], bl
jne 0x50d581
add ecx, 1
shr ebx, 8
add edx, 0xffffffff
jne 0x50d570
mov ecx, esi
mov ebx, ecx
mov edx, dword [esp + 0x18]
mov esi, edi
mov edi, dword [esp + 0x50]
jmp 0x50d663
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
cmp edi, ebx
mov ebp, dword [esp + 0x44]
cmovb ebp, dword [esp + 0x60]
mov ecx, dword [esp + 0xc]
cmp dword [ebp + edi], ecx
mov esi, dword [esp]
jne 0x50d683
cmp edi, ebx
mov ecx, dword [esp + 0x20]
cmovb ecx, dword [esp + 0xb0]
mov eax, ebp
mov dword [esp + 0x5c], ebp
lea eax, [ebp + edi]
mov dword [esp + 0x14], eax
lea edx, [eax + 4]
lea eax, [ecx - 3]
mov esi, edx
cmp eax, edx
jbe 0x50d61a
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x5c]
add edi, esi
add edi, 3
mov esi, edx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov ebp, esi
mov esi, dword [esi]
xor esi, dword [esp + 0xc]
jne 0x50d6c0
add ebp, 4
add edi, 4
cmp ebp, eax
mov esi, ebp
jb 0x50d600
cmp esi, ecx
mov edi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x30]
jae 0x50d6d0
mov eax, ecx
sub eax, esi
mov ebx, dword [esp + 0xc]
nop word cs:[eax + eax]
nop dword [eax]
cmp byte [esi], bl
jne 0x50d651
add esi, 1
shr ebx, 8
add eax, 0xffffffff
jne 0x50d640
mov esi, ecx
mov ebx, dword [esp + 0x24]
jmp 0x50d6d0
bsf ecx, edx
shr ecx, 3
add ebx, ecx
mov edx, dword [esp + 0x18]
add ebx, dword [esp + 0xbc]
mov dword [esp + 0x14], 2
mov ecx, dword [esp + 4]
cmp dword [esp + 0x14], 2
je 0x50d4cf
jmp 0x50d694
mov ebx, dword [esp + 0x3c]
nop word [eax + eax]
mov ecx, dword [esp + 4]
movzx eax, ax
sub ecx, eax
cmp ecx, dword [esp + 0x10]
jb 0x50dae0
mov edi, ecx
mov ecx, dword [esp + 0x34]
lea eax, [ecx - 1]
cmp ecx, 1
mov ecx, edi
mov dword [esp + 0x34], eax
jg 0x50d170
jmp 0x50dae0
bsf esi, esi
shr esi, 3
add esi, edi
mov edi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x30]
sub esi, edx
add esi, 4
cmp ebp, ebx
jae 0x50d701
mov edx, dword [esp + 0x14]
lea eax, [edx + esi]
cmp eax, ecx
mov eax, esi
mov esi, dword [esp + 0xe4]
je 0x50d71c
mov dword [esp + 0x48], eax
mov dword [esp + 0x88], esi
mov ecx, dword [esp + 4]
jmp 0x50d79b
mov dword [esp + 0x48], esi
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x88], eax
mov esi, eax
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x14]
jmp 0x50d79b
mov ebx, eax
lea ecx, [eax*8]
mov edx, dword [esp + 0xc]
rol edx, cl
mov eax, dword [esp + 0x2c]
mov edi, eax
mov ecx, eax
cmp dword [esp + 8], eax
jbe 0x50dabd
nop dword [eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x50d774
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 8]
jb 0x50d740
mov eax, dword [esp + 0x20]
cmp ecx, eax
jae 0x50d77c
sub eax, edi
lea edi, [ecx + eax]
cmp byte [ecx], dl
jne 0x50d770
add ecx, 1
shr edx, 8
add eax, 0xffffffff
jne 0x50d75f
mov ecx, edi
mov edi, ecx
jmp 0x50d77c
bsf eax, eax
shr eax, 3
add edi, eax
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
sub ebx, eax
add ebx, edi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x88], esi
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x98], eax
mov dword [esp + 0xa0], esi
lea eax, [esi + 4]
mov dword [esp + 0x50], eax
lea ebp, [edi + ecx]
xor esi, esi
mov edi, edx
nop dword [eax + eax]
mov eax, esi
mov edx, edi
mov ecx, dword [esp + 0x14]
lea ebx, [ecx + esi]
cmp ebx, dword [esp + 0x50]
jb 0x50d7e1
lea esi, [eax - 4]
lea edi, [edx - 4]
mov ecx, dword [esp + 0xc]
cmp dword [ebp + eax - 5], ecx
je 0x50d7c0
mov edi, ebp
lea esi, [eax + ebp]
add esi, 0xffffffff
mov ebp, dword [esp + 0xa0]
cmp ebx, ebp
jbe 0x50d83a
mov ecx, dword [esp + 0x84]
cmp byte [eax + edi - 2], cl
jne 0x50d83a
mov ecx, dword [esp + 0x88]
sub ecx, dword [esp + 4]
sub ecx, dword [esp + 0x5c]
sub ecx, eax
lea eax, [ecx + ebx]
add eax, 1
lea ecx, [esp + 0x9a]
nop
lea esi, [edx - 1]
cmp esi, ebp
jbe 0x50da50
movzx ebx, byte [edx - 2]
lea edi, [ecx - 1]
mov edx, esi
cmp bl, byte [ecx]
mov ecx, edi
je 0x50d820
mov edx, dword [esp + 0x14]
mov edi, edx
sub edi, esi
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x24]
jae 0x50d858
mov edx, dword [esp + 0x18]
mov esi, dword [esp]
jmp 0x50d94f
sub edx, edi
cmp edx, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
mov esi, dword [esp]
mov ebx, dword [esp + 0x3c]
jne 0x50d953
mov eax, dword [esp + 0x24]
cmp dword [esp + 0xd8], eax
jae 0x50d953
mov dword [esp + 0x50], edi
mov ecx, edi
neg ecx
shl ecx, 3
mov eax, dword [esp + 0xc]
rol eax, cl
mov dword [esp + 0x98], eax
mov dword [esp + 0x14], eax
shr eax, 0x18
mov dword [esp + 0x5c], eax
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0xb0]
mov esi, dword [esp + 0xec]
nop word cs:[eax + eax]
nop
mov ecx, esi
mov eax, edx
mov ebx, edi
lea edx, [esi + 1]
mov ebp, edx
cmp edx, dword [esp + 0xd4]
jb 0x50d8ee
lea esi, [ecx - 4]
lea edx, [eax - 4]
lea edi, [ebx + 4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
cmp dword [ecx - 3], eax
mov eax, dword [esp + 4]
je 0x50d8c0
cmp ebp, dword [esp + 0xe4]
jbe 0x50dab1
mov edx, dword [esp + 0x5c]
cmp byte [ecx], dl
mov edx, dword [esp + 0x18]
mov esi, dword [esp]
jne 0x50d942
add ebp, ebx
lea edx, [esp + 0x9a]
mov ebx, dword [esp + 0xe4]
nop word [eax + eax]
cmp ecx, ebx
jbe 0x50d93c
movzx eax, byte [ecx - 1]
add ecx, 0xffffffff
lea esi, [edx - 1]
cmp al, byte [edx]
mov edx, esi
mov esi, dword [esp]
je 0x50d920
add ecx, 1
mov ebp, ecx
mov eax, ebp
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
add edi, dword [esp + 0xb0]
sub edi, eax
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
mov ecx, eax
sub ecx, edi
mov edi, dword [esp + 0x10]
cmp ecx, edi
cmovbe ecx, edi
sub eax, ecx
mov edi, dword [esp + 0x48]
add eax, edi
cmp edi, ebx
ja 0x50d99f
cmp eax, ebx
jb 0x50d99f
mov eax, dword [esp + 0x30]
sub eax, ebx
mov edi, dword [esp + 0x48]
add edi, eax
mov eax, edi
not eax
mov ecx, dword [esp + 0x24]
add eax, ecx
cmp eax, 3
cmovb edi, ecx
mov dword [esp + 0x14], 2
mov ecx, edi
jmp 0x50d699
mov ebx, ecx
not ecx
mov edi, dword [esp + 0x24]
add ecx, edi
mov dword [esp + 0x14], 2
cmp ecx, 3
jae 0x50d9c1
mov ecx, edi
mov ebx, dword [esp + 0x3c]
jmp 0x50d699
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
cmovae eax, ecx
cmp esi, eax
jae 0x50d9f2
mov ecx, dword [esp + 0x28]
sub ecx, ebx
cmp ecx, 0xffff
ja 0x50dae0
mov ecx, ebx
mov edi, ebx
mov ecx, dword [esp + 0x44]
add ecx, ebx
mov dword [esp + 0x1c], ecx
mov esi, eax
jmp 0x50d9f4
mov edi, ebx
movzx eax, di
mov ecx, dword [esp + 0x4c]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edi, eax
mov ebx, dword [esp + 0x3c]
mov ecx, edi
jae 0x50d699
jmp 0x50dae0
mov edi, dword [esp + 0x20]
mov esi, dword [esp]
cmp edx, dword [esp + 0x30]
jae 0x50da39
mov al, byte [eax]
mov byte [esp + 0x3c], al
mov al, byte [esp + 0x3c]
cmp al, byte [edx]
mov eax, 0
sete al
add edx, eax
sub edx, dword [esp + 0xa8]
lea eax, [edx + 4]
cmp ecx, edi
jb 0x50d1e9
jmp 0x50d317
mov esi, eax
jmp 0x50d83a
mov edi, dword [esp + 0x20]
mov esi, dword [esp]
cmp eax, edi
jae 0x50da78
mov dl, byte [edx]
mov byte [esp + 0x30], dl
mov dl, byte [esp + 0x30]
cmp dl, byte [eax]
mov edx, 0
sete dl
add eax, edx
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
sub eax, dword [esp + 0xa8]
add eax, 4
cmp eax, esi
jg 0x50d47e
jmp 0x50d490
mov ecx, dword [esp + 0xa8]
mov ebx, ecx
mov edx, dword [esp + 0x20]
cmp ecx, edx
jb 0x50d554
jmp 0x50d65f
mov edx, dword [esp + 0x18]
mov esi, dword [esp]
jmp 0x50d942
mov ecx, dword [esp + 0x2c]
mov edi, ecx
mov eax, dword [esp + 0x20]
cmp ecx, eax
jb 0x50d75a
jmp 0x50d77c
cmp esi, 4
mov edi, 0xffff
jl 0x50cfa2
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xb4], eax
mov dword [esp + 0xf0], edx
mov dword [esp], esi
mov dword [esp + 0xb8], esi
mov ebp, dword [esp + 0x64]
mov esi, dword [esp + 0x1c]
nop word cs:[eax + eax]
nop dword [eax]
mov ebx, dword [esp]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x38], edx
lea esi, [edx + ebx]
cmp esi, dword [esp + 0xcc]
mov dword [esp + 0x58], esi
ja 0x50fa37
mov dword [esp + 0x18], ebp
lea eax, [esi - 2]
mov ebp, dword [esp + 0x4c]
mov edi, dword [ebp + 0x40004]
mov dword [esp + 0xa8], eax
mov edx, eax
sub edx, edi
mov ecx, dword [ebp + 0x40010]
lea eax, [ecx + 0x10000]
lea ebx, [edx - 0xffff]
cmp eax, edx
mov dword [esp + 0xec], ecx
cmova ebx, ecx
mov dword [esp + 0x44], ebx
mov eax, dword [esi - 2]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x40014]
cmp eax, edx
mov ebx, 0xffff
mov dword [esp + 0xd4], edx
jae 0x50dbda
nop
imul ecx, dword [edi + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
mov ebp, dword [esp + 0x4c]
sub edx, dword [ebp + ecx*4]
cmp edx, 0xffff
cmovae edx, ebx
movzx esi, ax
mov word [ebp + esi*2 + 0x20000], dx
mov edx, dword [esp + 0xd4]
mov dword [ebp + ecx*4], eax
add eax, 1
cmp eax, edx
jb 0x50dba0
mov dword [esp + 0x30], edi
mov ebp, dword [esp + 0x4c]
mov edi, dword [ebp + 0x4000c]
mov eax, dword [ebp + 0x40008]
mov dword [esp + 0x60], eax
mov dword [ebp + 0x40014], edx
mov ebx, dword [esp + 0xa8]
imul esi, dword [ebx], 0x9e3779b1
shr esi, 0x11
mov eax, dword [esp + 0xc]
movzx ecx, ax
mov edx, eax
shr edx, 0x10
xor edx, ecx
movzx ecx, al
shr eax, 0x18
mov dword [esp + 0x64], eax
xor ecx, eax
or ecx, edx
mov eax, dword [ebp + esi*4]
sete byte [esp + 0xbc]
mov dword [esp + 4], eax
cmp eax, dword [esp + 0x44]
jb 0x50fa48
mov eax, ebx
mov ecx, dword [esp + 0x38]
sub eax, ecx
mov dword [esp + 0x8c], eax
neg eax
mov dword [esp + 0x94], eax
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x84], eax
mov eax, ebx
neg eax
mov dword [esp + 0xd0], eax
mov esi, dword [esp + 0x7c]
mov edx, 0xfffffffe
sub edx, ecx
sub edx, esi
mov dword [esp + 0x70], edx
lea eax, [esi + edi]
add eax, ecx
add eax, 0xfffffffe
mov dword [esp + 0xe0], eax
mov ebp, dword [esp + 0xec]
mov eax, ebp
sub eax, edi
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x30]
lea eax, [edx + edi]
lea ecx, [ebx + 4]
mov dword [esp + 0x2c], ecx
lea ecx, [ebx + 8]
mov dword [esp + 0xd8], ecx
lea ecx, [edi - 4]
mov dword [esp + 0x90], ecx
mov ebx, dword [esp + 0x60]
lea ecx, [ebx + ebp]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x48], eax
lea eax, [eax + 4]
mov dword [esp + 0xa4], eax
lea eax, [ebx + edi]
mov dword [esp + 0xe4], eax
lea eax, [ebx + ebp + 4]
mov dword [esp + 0x5c], eax
lea eax, [edx - 1]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x38]
lea eax, [esi + eax - 3]
mov dword [esp + 0x34], eax
lea eax, [ebx - 1]
mov dword [esp + 0x80], eax
mov dword [esp + 0x28], edi
lea eax, [ebx + edi - 1]
mov dword [esp + 0x40], eax
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x50], eax
xor ebp, ebp
mov ebx, dword [esp + 4]
nop dword [eax + eax]
mov ecx, dword [esp + 0x28]
sub ecx, ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 4], ebx
mov dword [esp + 0x24], ecx
jbe 0x50ddc0
cmp ebx, dword [esp + 0x90]
ja 0x50e0f0
mov eax, dword [esp + 0x60]
lea edx, [eax + ebx]
mov eax, dword [esp + 0xc]
cmp dword [edx], eax
jne 0x50e0f0
mov ebp, dword [esp + 0xa8]
lea eax, [ecx + ebp]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
mov edi, eax
cmova edi, ecx
mov dword [esp + 0x3c], edx
lea ebx, [edx + 4]
lea edx, [edi - 3]
mov ecx, dword [esp + 0x2c]
cmp edx, ecx
jbe 0x50de6e
mov ecx, dword [ecx]
xor ecx, dword [ebx]
je 0x50de64
bsf ecx, ecx
shr ecx, 3
jmp 0x50def5
mov eax, dword [esp + 0x30]
lea edi, [eax + ebx]
mov eax, dword [esp + 0x38]
movzx eax, word [eax + esi - 1]
mov ecx, dword [esp + 0x94]
add ecx, edi
cmp ax, word [esi + ecx - 1]
jne 0x50e0f0
mov eax, dword [esp + 0xc]
cmp dword [edi], eax
jne 0x50e0f0
cmp dword [esp + 0x8c], 0
mov dword [esp], esi
je 0x50df3a
mov ecx, dword [esp + 0x48]
sub ecx, edi
mov eax, dword [esp + 0x84]
cmp eax, ecx
cmovg ecx, eax
xor edx, edx
test ecx, ecx
mov ebp, 0
cmovs ebp, ecx
mov eax, dword [esp + 0x100]
add ebx, eax
nop dword [eax + eax]
cmp edx, ecx
jle 0x50de4b
lea esi, [edx - 1]
mov eax, dword [esp + 0x34]
movzx eax, byte [eax + edx]
cmp al, byte [ebx + edx]
mov edx, esi
je 0x50de30
add esi, 1
mov ebp, esi
mov esi, dword [esp]
lea ecx, [edi + 4]
mov ebx, dword [esp + 0x2c]
cmp dword [esp + 8], ebx
ja 0x50df49
jmp 0x50df71
add ebx, 4
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0xa0], edi
mov ebp, esi
cmp ecx, edx
jae 0x50dea3
mov esi, dword [esp + 0x70]
lea edi, [esi + ecx]
nop word cs:[eax + eax]
nop dword [eax]
mov esi, dword [ecx]
xor esi, dword [ebx]
jne 0x50dedd
add ecx, 4
add ebx, 4
add edi, 4
cmp ecx, edx
jb 0x50de90
mov edi, dword [esp + 0xa0]
lea edx, [edi - 1]
cmp ecx, edx
jae 0x50debf
movzx edx, word [ebx]
cmp dx, word [ecx]
jne 0x50debf
add ecx, 2
add ebx, 2
cmp ecx, edi
mov esi, ebp
jae 0x50ded0
mov dl, byte [ebx]
xor ebx, ebx
cmp dl, byte [ecx]
sete bl
add ecx, ebx
mov ebp, dword [esp + 0xa8]
sub ecx, dword [esp + 0x2c]
jmp 0x50def5
bsf ecx, esi
shr ecx, 3
add ecx, edi
mov esi, ebp
mov ebp, dword [esp + 0xa8]
mov edi, dword [esp + 0xa0]
lea ebx, [ecx + 4]
cmp eax, dword [esp + 0x20]
mov dword [esp], esi
jae 0x50e05e
lea eax, [ecx + ebp]
add eax, 4
cmp eax, edi
jne 0x50e05e
mov edx, dword [esp + 0x48]
mov ecx, edx
mov eax, edi
cmp dword [esp + 8], edi
jbe 0x50dfca
mov eax, dword [edi]
xor eax, dword [edx]
je 0x50dfc0
bsf eax, eax
shr eax, 3
jmp 0x50e05c
xor ebp, ebp
lea ecx, [edi + 4]
mov ebx, dword [esp + 0x2c]
cmp dword [esp + 8], ebx
jbe 0x50df71
mov edx, dword [ebx]
xor edx, dword [ecx]
je 0x50df67
bsf ebx, edx
shr ebx, 3
sub ebx, ebp
add ebx, 4
cmp ebx, esi
jg 0x50e049
jmp 0x50e0f0
add ecx, 4
mov ebx, dword [esp + 0xd8]
cmp ebx, dword [esp + 8]
jae 0x50df99
mov eax, dword [esp + 0x70]
lea edx, [eax + ebx]
nop
mov esi, dword [ebx]
xor esi, dword [ecx]
jne 0x50e031
add ebx, 4
add ecx, 4
add edx, 4
cmp ebx, dword [esp + 8]
jb 0x50df80
cmp ebx, dword [esp + 0xdc]
jae 0x50e657
movzx eax, word [ecx]
cmp ax, word [ebx]
mov esi, dword [esp]
jne 0x50e65a
add ebx, 2
add ecx, 2
jmp 0x50e65a
lea eax, [edi + 4]
mov ecx, dword [esp + 0xa4]
cmp eax, dword [esp + 8]
jae 0x50e005
mov esi, dword [esp + 0xe0]
sub esi, dword [esp + 4]
mov edx, dword [esp + 0xe8]
cmp esi, edx
cmovae esi, edx
mov edx, eax
sub edx, esi
nop dword [eax + eax]
mov esi, dword [eax]
xor esi, dword [ecx]
jne 0x50e054
add eax, 4
add ecx, 4
add edx, 4
cmp eax, dword [esp + 8]
jb 0x50dff0
cmp eax, dword [esp + 0xdc]
jae 0x50e01c
movzx edx, word [ecx]
cmp dx, word [eax]
jne 0x50e01c
add eax, 2
add ecx, 2
cmp eax, dword [esp + 0x20]
jae 0x50e02d
mov cl, byte [ecx]
xor edx, edx
cmp cl, byte [eax]
sete dl
add eax, edx
sub eax, edi
jmp 0x50e05c
bsf ebx, esi
shr ebx, 3
add ebx, edx
mov esi, dword [esp]
sub ebx, ebp
add ebx, 4
cmp ebx, esi
jle 0x50e0f0
add edi, ebp
mov dword [esp + 0x1c], edi
jmp 0x50e0e1
bsf eax, esi
shr eax, 3
add eax, edx
add ebx, eax
cmp dword [esp + 0x8c], 0
je 0x50e0c6
mov ecx, dword [esp + 0x68]
sub ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x84]
cmp eax, ecx
cmovg ecx, eax
xor edx, edx
test ecx, ecx
mov ebp, 0
cmovs ebp, ecx
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 4]
lea edi, [eax + esi]
nop word cs:[eax + eax]
cmp edx, ecx
jle 0x50e0bb
lea esi, [edx - 1]
mov eax, dword [esp + 0x34]
movzx eax, byte [eax + edx]
cmp al, byte [edi + edx]
mov edx, esi
je 0x50e0a0
add esi, 1
mov ebp, esi
sub ebx, ebp
mov esi, dword [esp]
cmp ebx, esi
jg 0x50e0d1
jmp 0x50e0f0
xor ebp, ebp
sub ebx, ebp
mov esi, dword [esp]
cmp ebx, esi
jle 0x50e0f0
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x30]
add eax, ecx
add eax, ebp
mov dword [esp + 0x1c], eax
add ebp, dword [esp + 0xa8]
mov dword [esp + 0x18], ebp
mov esi, ebx
nop
movzx eax, word [esp + 4]
mov ecx, dword [esp + 0x4c]
movzx eax, word [ecx + eax*2 + 0x20000]
test byte [esp + 0xac], 1
je 0x50e220
cmp ax, 1
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x14]
jne 0x50e2c0
cmp dword [esp + 0x10], 0
mov dword [esp], esi
je 0x50e229
mov ecx, dword [esp + 0x60]
cmp dword [esp + 0x10], 2
jne 0x50e2c0
mov edi, dword [esp + 4]
add edi, 0xffffffff
mov dword [esp + 0x3c], edi
cmp edi, dword [esp + 0x44]
jb 0x50e2c0
mov dword [esp + 0x10], 2
cmp dword [esp + 0x24], 3
jb 0x50e2c0
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
cmp edx, ebp
mov edi, dword [esp + 0x30]
cmovb edi, ecx
mov ecx, dword [esp + 0xc]
cmp dword [edi + edx], ecx
jne 0x50e220
cmp edx, ebp
mov eax, dword [esp + 0x20]
cmovb eax, dword [esp + 0xe4]
mov esi, edi
mov dword [esp + 0xa0], edi
lea ecx, [edi + edx]
mov dword [esp + 0x10], ecx
add ecx, 4
lea edx, [eax - 3]
mov esi, ecx
cmp edx, ecx
jbe 0x50e1ea
mov esi, dword [esp + 4]
mov edi, dword [esp + 0xa0]
add edi, esi
add edi, 3
mov esi, ecx
nop word cs:[eax + eax]
nop
mov ebp, esi
mov esi, dword [esi]
xor esi, dword [esp + 0xc]
jne 0x50e2ec
add ebp, 4
add edi, 4
cmp ebp, edx
mov esi, ebp
jb 0x50e1d0
cmp esi, eax
mov ebp, esi
mov esi, dword [esp + 0x48]
jae 0x50e2f8
mov edi, eax
sub edi, ebp
mov edx, dword [esp + 0xc]
cmp byte [ebp], dl
jne 0x50e2f8
add ebp, 1
shr edx, 8
add edi, 0xffffffff
jne 0x50e200
mov ebp, eax
jmp 0x50e2f8
mov ebp, dword [esp + 0x14]
jmp 0x50e2c0
mov dword [esp + 0x10], 1
cmp byte [esp + 0xbc], 0
je 0x50e2c0
mov ecx, dword [esp + 0x2c]
mov ebp, ecx
cmp ebx, ecx
jbe 0x50e262
nop dword [eax]
mov edx, dword [ecx]
xor edx, dword [esp + 0xc]
jne 0x50e28e
add ecx, 4
add ebp, 4
cmp ecx, ebx
jb 0x50e250
cmp ecx, dword [esp + 0x20]
jae 0x50e296
mov edx, dword [esp + 0x20]
sub edx, ebp
lea esi, [ecx + edx]
mov ebx, dword [esp + 0xc]
cmp byte [ecx], bl
jne 0x50e286
add ecx, 1
shr ebx, 8
add edx, 0xffffffff
jne 0x50e275
mov ecx, esi
mov ebp, ecx
mov ebx, dword [esp + 8]
jmp 0x50e296
bsf ecx, edx
shr ecx, 3
add ebp, ecx
add ebp, dword [esp + 0xd0]
mov dword [esp + 0x10], 2
mov esi, dword [esp]
mov ecx, dword [esp + 0x60]
cmp dword [esp + 0x10], 2
je 0x50e13e
nop word [eax + eax]
movzx eax, ax
mov ebx, dword [esp + 4]
sub ebx, eax
cmp ebx, dword [esp + 0x44]
jb 0x50e6a0
mov ecx, dword [esp + 0x50]
lea eax, [ecx - 1]
cmp ecx, 1
mov dword [esp + 0x50], eax
jg 0x50dd40
jmp 0x50e6a0
bsf ebp, esi
shr ebp, 3
add ebp, edi
mov esi, dword [esp + 0x48]
sub ebp, ecx
add ebp, 4
mov ecx, dword [esp + 0x28]
cmp dword [esp + 0x3c], ecx
mov edi, dword [esp + 0x10]
mov dword [esp + 0xb0], ebp
jae 0x50e379
lea ecx, [edi + ebp]
cmp ecx, eax
jne 0x50e3a4
lea ecx, [ebp*8]
mov eax, dword [esp + 0xc]
rol eax, cl
cmp ebx, esi
mov edi, dword [esp + 0x20]
mov edx, esi
mov ecx, esi
jbe 0x50e350
nop word cs:[eax + eax]
mov esi, dword [ecx]
xor esi, eax
jne 0x50e382
add ecx, 4
add edx, 4
cmp ecx, ebx
jb 0x50e340
cmp ecx, edi
jae 0x50e38a
sub edi, edx
lea edx, [ecx + edi]
mov esi, dword [esp + 0xb0]
cmp byte [ecx], al
jne 0x50e371
add ecx, 1
shr eax, 8
add edi, 0xffffffff
jne 0x50e360
mov ecx, edx
mov edx, ecx
mov eax, dword [esp + 0x48]
jmp 0x50e395
mov dword [esp + 0xfc], esi
jmp 0x50e3b1
bsf eax, esi
shr eax, 3
add edx, eax
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0xb0]
mov edi, dword [esp + 0x10]
sub esi, eax
add esi, edx
mov dword [esp + 0xb0], esi
mov eax, dword [esp + 0x68]
mov dword [esp + 0xfc], eax
mov esi, eax
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x98], eax
mov dword [esp + 0x88], esi
lea eax, [esi + 4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 4]
lea ebx, [ecx + eax]
xor esi, esi
mov edx, edi
nop dword [eax]
mov edi, esi
mov ecx, edx
mov eax, dword [esp + 0x10]
lea ebp, [eax + esi]
cmp ebp, dword [esp + 0x24]
jb 0x50e401
lea esi, [edi - 4]
lea edx, [ecx - 4]
mov eax, dword [esp + 0xc]
cmp dword [ebx + edi - 5], eax
je 0x50e3e0
lea edx, [edi + ebx]
add edx, 0xffffffff
cmp ebp, dword [esp + 0x88]
jbe 0x50e681
mov eax, dword [esp + 0x64]
cmp byte [edi + ebx - 2], al
mov esi, dword [esp]
jne 0x50e46d
mov eax, dword [esp + 0xfc]
sub eax, dword [esp + 4]
sub eax, dword [esp + 0xa0]
sub eax, edi
add eax, ebp
add eax, 1
lea edi, [esp + 0x9a]
mov ebp, dword [esp + 0x88]
nop dword [eax + eax]
lea edx, [ecx - 1]
cmp edx, ebp
jbe 0x50e650
movzx ebx, byte [ecx - 2]
lea esi, [edi - 1]
mov ecx, edx
cmp bl, byte [edi]
mov edi, esi
mov esi, dword [esp]
je 0x50e450
mov eax, dword [esp + 0x10]
mov ebx, eax
sub ebx, edx
mov ecx, dword [esp + 0x3c]
cmp ecx, dword [esp + 0x28]
jae 0x50e488
mov ebp, dword [esp + 0x14]
jmp 0x50e57d
sub eax, ebx
cmp eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x14]
jne 0x50e57d
mov eax, dword [esp + 0x28]
cmp dword [esp + 0xec], eax
jae 0x50e57d
mov dword [esp + 0x24], ebx
mov ecx, ebx
neg ecx
shl ecx, 3
mov eax, dword [esp + 0xc]
rol eax, cl
mov dword [esp + 0x98], eax
mov dword [esp + 0x10], eax
shr eax, 0x18
mov dword [esp + 0xa0], eax
mov ebp, dword [esp + 0xf8]
mov edi, dword [esp + 0xe4]
mov esi, dword [esp + 0x40]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, esi
mov ecx, edi
mov eax, ebp
add esi, 1
mov ebx, esi
cmp esi, dword [esp + 0x5c]
jb 0x50e51b
lea esi, [edx - 4]
lea edi, [ecx - 4]
lea ebp, [eax + 4]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x10]
cmp dword [edx - 3], ecx
mov ecx, dword [esp + 4]
je 0x50e4f0
cmp ebx, dword [esp + 0x68]
jbe 0x50e689
mov edi, ebx
mov ebx, dword [esp + 0xa0]
cmp byte [edx], bl
mov esi, dword [esp]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
jne 0x50e570
add edi, eax
lea eax, [esp + 0x9a]
nop word cs:[eax + eax]
cmp edx, dword [esp + 0x68]
jbe 0x50e56e
movzx ecx, byte [edx - 1]
add edx, 0xffffffff
lea esi, [eax - 1]
cmp cl, byte [eax]
mov eax, esi
mov esi, dword [esp]
je 0x50e550
add edx, 1
mov edi, edx
mov ecx, edi
add ebx, dword [esp + 0xe4]
sub ebx, ecx
mov ecx, dword [esp + 0x3c]
mov edi, ecx
sub edi, ebx
mov eax, dword [esp + 0x44]
cmp edi, eax
cmovbe edi, eax
mov eax, ecx
sub eax, edi
mov edx, dword [esp + 0xb0]
add eax, edx
cmp edx, ebp
ja 0x50e5c7
cmp eax, ebp
jb 0x50e5c7
sub ecx, ebp
mov ebx, dword [esp + 0xb0]
add ebx, ecx
mov eax, ebx
not eax
mov ecx, dword [esp + 0x28]
add eax, ecx
cmp eax, 3
cmovb ebx, ecx
mov dword [esp + 0x10], 2
jmp 0x50e2c9
mov edx, edi
not edx
mov ebx, dword [esp + 0x28]
add edx, ebx
cmp edx, 3
mov ecx, edi
cmovb ecx, ebx
mov ebx, ecx
mov dword [esp + 0x10], 2
cmp dword [esp + 0x8c], 0
jne 0x50e2c9
cmp edx, 3
jb 0x50e2c9
cmp eax, ebp
cmovae eax, ebp
cmp esi, eax
jae 0x50e633
mov edx, dword [esp + 0xd4]
sub edx, edi
cmp edx, 0xffff
ja 0x50e6a0
mov ebx, edi
mov edx, dword [esp + 0x30]
add edx, edi
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x18], ecx
mov esi, eax
jmp 0x50e635
mov ebx, edi
movzx eax, bx
mov edi, dword [esp + 0x4c]
movzx eax, word [edi + eax*2 + 0x20000]
sub ebx, eax
mov eax, ebx
jae 0x50e2c9
jmp 0x50e6a0
mov edx, eax
jmp 0x50e46d
mov esi, dword [esp]
cmp ebx, dword [esp + 0x20]
jae 0x50e66b
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
sub ebx, dword [esp + 0x2c]
sub ebx, ebp
add ebx, 4
cmp ebx, esi
jg 0x50e049
jmp 0x50e0f0
mov esi, dword [esp]
jmp 0x50e46d
mov esi, dword [esp]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
jmp 0x50e570
cmp esi, dword [esp + 0x7c]
je 0x50fa3d
mov dword [esp], esi
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0xf0]
cmp edx, ebx
setb cl
mov eax, dword [esp + 0xb8]
add eax, ebx
mov ebp, dword [esp + 0x18]
cmp ebp, eax
setb al
and al, cl
cmovne ebx, edx
mov ecx, ebp
sub ecx, ebx
mov edx, ebp
mov esi, dword [esp + 0x1c]
mov dword [esp + 0xa4], esi
cmp ecx, 3
jl 0x50db20
mov dword [esp + 0x40], ebx
test al, al
mov eax, dword [esp + 0x6c]
cmovne eax, dword [esp + 0xb4]
mov dword [esp + 0x6c], eax
mov ecx, dword [esp + 0x7c]
cmovne ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x54], eax
mov esi, dword [esp]
cmp ecx, 0x12
mov eax, 0x12
cmovl eax, ecx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0xb4], eax
add eax, ebx
mov dword [esp + 0x110], eax
lea eax, [ebx + ecx]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
lea eax, [ebx + ecx]
add eax, 3
mov dword [esp + 0x104], eax
mov eax, ebp
mov ebx, dword [esp + 0x40]
sub eax, ebx
cmp eax, 0x11
jg 0x50e797
lea ecx, [esi + ebp]
add ecx, 0xfffffffc
cmp dword [esp + 0x110], ecx
lea ecx, [eax + esi - 4]
cmovbe ecx, dword [esp + 0xb4]
mov eax, ebx
sub eax, ebp
add eax, ecx
test eax, eax
jle 0x50e797
add ebp, eax
mov ecx, dword [esp + 0x1c]
add ecx, eax
sub esi, eax
mov edx, ebp
mov dword [esp + 0xa4], ecx
jmp 0x50e7a4
mov edx, ebp
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xa4], eax
mov eax, esi
mov dword [esp + 0xb8], esi
add esi, edx
cmp esi, dword [esp + 0xcc]
mov dword [esp + 0x64], edx
mov dword [esp + 0x58], esi
ja 0x50fd14
lea eax, [esi - 3]
mov edi, dword [esp + 0x4c]
mov ebx, dword [edi + 0x40004]
mov dword [esp + 0x38], eax
mov edx, eax
sub edx, ebx
mov ecx, dword [edi + 0x40010]
lea ebp, [ecx + 0x10000]
lea eax, [edx - 0xffff]
cmp ebp, edx
mov dword [esp + 0xec], ecx
cmova eax, ecx
mov dword [esp + 0x44], eax
mov eax, dword [esi - 3]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x40014]
cmp eax, edx
mov ebp, 0xffff
mov dword [esp + 0xa8], edx
jae 0x50e858
nop dword [eax + eax]
imul ecx, dword [ebx + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
mov edi, dword [esp + 0x4c]
sub edx, dword [edi + ecx*4]
cmp edx, 0xffff
cmovae edx, ebp
movzx esi, ax
mov word [edi + esi*2 + 0x20000], dx
mov edx, dword [esp + 0xa8]
mov dword [edi + ecx*4], eax
add eax, 1
cmp eax, edx
jb 0x50e820
mov dword [esp + 0x30], ebx
mov ebp, dword [esp + 0x4c]
mov edi, dword [ebp + 0x4000c]
mov eax, dword [ebp + 0x40008]
mov dword [esp + 0x60], eax
mov dword [ebp + 0x40014], edx
mov ebx, dword [esp + 0x38]
imul esi, dword [ebx], 0x9e3779b1
shr esi, 0x11
mov eax, dword [esp + 0xc]
movzx ecx, ax
mov edx, eax
shr edx, 0x10
xor edx, ecx
movzx ecx, al
shr eax, 0x18
mov dword [esp + 0xe4], eax
xor ecx, eax
or ecx, edx
mov eax, dword [ebp + esi*4]
sete byte [esp + 0xbc]
mov dword [esp + 4], eax
cmp eax, dword [esp + 0x44]
jb 0x50fd10
mov eax, ebx
mov ecx, dword [esp + 0x64]
sub eax, ecx
mov dword [esp + 0x5c], eax
neg eax
mov dword [esp + 0xd4], eax
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x84], eax
mov eax, ebx
neg eax
mov dword [esp + 0x88], eax
mov esi, dword [esp + 0xb8]
lea eax, [ecx + esi]
not eax
mov dword [esp + 0xa0], eax
lea eax, [esi + edi]
lea eax, [ecx + eax - 3]
mov dword [esp + 0xe0], eax
mov ebp, dword [esp + 0xec]
mov eax, ebp
sub eax, edi
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x30]
lea eax, [edx + edi]
lea ecx, [ebx + 4]
mov dword [esp + 0x94], ecx
lea ecx, [ebx + 8]
mov dword [esp + 0x70], ecx
lea ecx, [edi - 4]
mov dword [esp + 0x3c], ecx
mov ebx, dword [esp + 0x60]
lea ecx, [ebx + ebp]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x48], eax
lea eax, [eax + 4]
mov dword [esp + 0xfc], eax
lea eax, [ebx + edi]
mov dword [esp + 0xd0], eax
lea eax, [ebx + ebp + 4]
mov dword [esp + 0x2c], eax
lea eax, [edx - 1]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x64]
lea eax, [esi + eax - 4]
mov dword [esp + 0x34], eax
lea eax, [ebx - 1]
mov dword [esp + 0x80], eax
lea eax, [ebx + edi - 1]
mov dword [esp + 0xc0], eax
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x50], eax
xor ebp, ebp
mov dword [esp + 0x28], edi
mov ebx, dword [esp + 4]
nop word cs:[eax + eax]
nop
sub edi, ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 4], ebx
mov dword [esp + 0x24], edi
jbe 0x50ea60
cmp ebx, dword [esp + 0x3c]
ja 0x50ed70
mov eax, dword [esp + 0x60]
lea ecx, [eax + ebx]
mov eax, dword [esp + 0xc]
cmp dword [ecx], eax
jne 0x50ed70
mov ebp, dword [esp + 0x38]
lea eax, [edi + ebp]
mov edi, dword [esp + 0x20]
cmp eax, edi
mov edx, eax
cmova edx, edi
mov dword [esp + 0x68], ecx
lea ebx, [ecx + 4]
mov dword [esp + 0x90], edx
add edx, 0xfffffffd
mov ecx, dword [esp + 0x94]
cmp edx, ecx
jbe 0x50eb0e
mov ecx, dword [ecx]
xor ecx, dword [ebx]
je 0x50eb07
bsf ecx, ecx
shr ecx, 3
lea ebx, [ecx + 4]
cmp eax, edi
mov dword [esp], esi
jb 0x50eb80
jmp 0x50ece7
lea edi, [edx + ebx]
mov eax, dword [esp + 0x64]
movzx eax, word [eax + esi - 1]
mov ecx, dword [esp + 0xd4]
add ecx, edi
cmp ax, word [esi + ecx - 1]
jne 0x50ed70
mov eax, dword [esp + 0xc]
cmp dword [edi], eax
jne 0x50ed70
cmp dword [esp + 0x5c], 0
mov dword [esp], esi
je 0x50ebbd
mov ecx, dword [esp + 0x48]
sub ecx, edi
mov eax, dword [esp + 0x84]
cmp eax, ecx
cmovg ecx, eax
xor edx, edx
test ecx, ecx
mov ebp, 0
cmovs ebp, ecx
mov eax, dword [esp + 0x100]
add ebx, eax
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp edx, ecx
jle 0x50eaeb
lea esi, [edx - 1]
mov eax, dword [esp + 0x34]
movzx eax, byte [eax + edx]
cmp al, byte [ebx + edx]
mov edx, esi
je 0x50ead0
add esi, 1
mov ebp, esi
mov esi, dword [esp]
lea ecx, [edi + 4]
mov ebx, dword [esp + 0x94]
cmp dword [esp + 8], ebx
ja 0x50ebcf
jmp 0x50ebe7
add ebx, 4
mov ecx, dword [esp + 0x70]
mov ebp, esi
cmp ecx, edx
jae 0x50eb33
mov esi, dword [esp + 0xa0]
lea edi, [esi + ecx]
nop
mov esi, dword [ecx]
xor esi, dword [ebx]
jne 0x50eb60
add ecx, 4
add ebx, 4
add edi, 4
cmp ecx, edx
jb 0x50eb20
mov edx, dword [esp + 0x90]
add edx, 0xffffffff
cmp ecx, edx
jae 0x50f2df
movzx edx, word [ebx]
cmp dx, word [ecx]
mov edi, dword [esp + 0x20]
jne 0x50f2e3
add ecx, 2
add ebx, 2
jmp 0x50f2e3
bsf ecx, esi
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0x20]
mov esi, ebp
mov ebp, dword [esp + 0x38]
lea ebx, [ecx + 4]
cmp eax, edi
mov dword [esp], esi
jae 0x50ece7
lea eax, [ecx + ebp]
add eax, 4
mov ebp, dword [esp + 0x90]
cmp eax, ebp
jne 0x50ece7
mov edx, dword [esp + 0x48]
mov ecx, edx
mov eax, ebp
cmp dword [esp + 8], ebp
jbe 0x50ec4e
mov eax, dword [ebp]
xor eax, dword [edx]
je 0x50ec44
bsf eax, eax
shr eax, 3
jmp 0x50ece5
xor ebp, ebp
lea ecx, [edi + 4]
mov ebx, dword [esp + 0x94]
cmp dword [esp + 8], ebx
jbe 0x50ebe7
mov edx, dword [ebx]
xor edx, dword [ecx]
je 0x50ebe0
bsf ebx, edx
shr ebx, 3
jmp 0x50ecc1
add ecx, 4
mov ebx, dword [esp + 0x70]
cmp ebx, dword [esp + 8]
jae 0x50ec19
mov eax, dword [esp + 0xa0]
lea edx, [eax + ebx]
nop word [eax + eax]
mov esi, dword [ebx]
xor esi, dword [ecx]
jne 0x50ecb6
add ebx, 4
add ecx, 4
add edx, 4
cmp ebx, dword [esp + 8]
jb 0x50ec00
cmp ebx, dword [esp + 0xdc]
jae 0x50f31e
movzx eax, word [ecx]
cmp ax, word [ebx]
mov esi, dword [esp]
mov edx, dword [esp + 0x30]
jne 0x50f325
add ebx, 2
add ecx, 2
jmp 0x50f325
lea eax, [ebp + 4]
mov ecx, dword [esp + 0xfc]
cmp eax, dword [esp + 8]
jae 0x50ec85
mov esi, dword [esp + 0xe0]
sub esi, dword [esp + 4]
mov edx, dword [esp + 0xe8]
cmp esi, edx
cmovae esi, edx
mov edx, eax
sub edx, esi
nop
mov esi, dword [eax]
xor esi, dword [ecx]
jne 0x50ecdd
add eax, 4
add ecx, 4
add edx, 4
cmp eax, dword [esp + 8]
jb 0x50ec70
cmp eax, dword [esp + 0xdc]
jae 0x50ec9c
movzx edx, word [ecx]
cmp dx, word [eax]
jne 0x50ec9c
add eax, 2
add ecx, 2
mov ebp, dword [esp + 0x90]
cmp eax, edi
jae 0x50ecb2
mov cl, byte [ecx]
xor edx, edx
cmp cl, byte [eax]
sete dl
add eax, edx
sub eax, ebp
jmp 0x50ece5
bsf ebx, esi
shr ebx, 3
add ebx, edx
mov esi, dword [esp]
mov edx, dword [esp + 0x30]
sub ebx, ebp
add ebx, 4
cmp ebx, esi
jle 0x50ed70
add edi, ebp
mov dword [esp + 0x1c], edi
jmp 0x50ed58
bsf eax, esi
shr eax, 3
add eax, edx
add ebx, eax
cmp dword [esp + 0x5c], 0
je 0x50ed3d
mov ecx, dword [esp + 0x8c]
sub ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x84]
cmp eax, ecx
cmovg ecx, eax
xor edx, edx
test ecx, ecx
mov ebp, 0
cmovs ebp, ecx
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 4]
lea edi, [eax + esi]
nop
cmp edx, ecx
jle 0x50ed3f
lea esi, [edx - 1]
mov eax, dword [esp + 0x34]
movzx eax, byte [eax + edx]
cmp al, byte [edi + edx]
mov edx, esi
je 0x50ed20
add esi, 1
mov ebp, esi
jmp 0x50ed3f
xor ebp, ebp
sub ebx, ebp
mov esi, dword [esp]
cmp ebx, esi
mov edx, dword [esp + 0x30]
jle 0x50ed70
mov eax, dword [esp + 4]
add eax, edx
add eax, ebp
mov dword [esp + 0x1c], eax
add ebp, dword [esp + 0x38]
mov dword [esp + 0x18], ebp
mov esi, ebx
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, word [esp + 4]
mov ecx, dword [esp + 0x4c]
movzx eax, word [ecx + eax*2 + 0x20000]
test byte [esp + 0xac], 1
je 0x50eea0
cmp ax, 1
mov ebx, dword [esp + 8]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
jne 0x50ef40
mov ecx, dword [esp + 0x10]
test ecx, ecx
mov dword [esp], esi
je 0x50eead
mov dword [esp + 0x10], ecx
cmp ecx, 2
jne 0x50ef40
mov ecx, dword [esp + 4]
add ecx, 0xffffffff
cmp ecx, dword [esp + 0x44]
jb 0x50ef40
mov dword [esp + 0x10], 2
cmp dword [esp + 0x24], 3
jb 0x50ef40
cmp ecx, edi
mov edi, edx
cmovb edi, dword [esp + 0x60]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x90]
cmp dword [edi + edx], ecx
mov ecx, dword [esp + 0x90]
jne 0x50ef36
cmp ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
cmovb edx, dword [esp + 0xd0]
mov eax, edi
mov dword [esp + 0x68], edi
lea eax, [edi + ecx]
mov dword [esp + 0x10], eax
lea ecx, [eax + 4]
mov dword [esp + 0x24], edx
add edx, 0xfffffffd
mov eax, ecx
cmp edx, ecx
jbe 0x50ee66
mov esi, dword [esp + 4]
mov eax, dword [esp + 0x68]
lea edi, [esi + eax]
add edi, 3
mov eax, ecx
nop dword [eax]
mov esi, dword [eax]
xor esi, dword [esp + 0xc]
jne 0x50ef6c
add eax, 4
add edi, 4
cmp eax, edx
jb 0x50ee50
cmp eax, dword [esp + 0x24]
mov edx, eax
mov esi, dword [esp + 0x48]
jae 0x50ef78
mov edi, dword [esp + 0x24]
sub edi, edx
mov eax, dword [esp + 0xc]
cmp byte [edx], al
jne 0x50ef78
add edx, 1
shr eax, 8
add edi, 0xffffffff
jne 0x50ee80
mov edx, dword [esp + 0x24]
jmp 0x50ef78
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
jmp 0x50ef40
mov dword [esp + 0x10], 1
cmp byte [esp + 0xbc], 0
je 0x50ef40
mov ecx, dword [esp + 0x94]
mov ebp, ecx
cmp ebx, ecx
jbe 0x50eee2
mov edx, dword [ecx]
xor edx, dword [esp + 0xc]
jne 0x50ef0c
add ecx, 4
add ebp, 4
cmp ecx, ebx
jb 0x50eed0
mov edx, dword [esp + 0x20]
cmp ecx, edx
jae 0x50ef14
sub edx, ebp
lea esi, [ecx + edx]
mov ebx, dword [esp + 0xc]
cmp byte [ecx], bl
jne 0x50ef04
add ecx, 1
shr ebx, 8
add edx, 0xffffffff
jne 0x50eef3
mov ecx, esi
mov ebp, ecx
mov ebx, dword [esp + 8]
jmp 0x50ef14
bsf ecx, edx
shr ecx, 3
add ebp, ecx
mov edx, dword [esp + 0x30]
add ebp, dword [esp + 0x88]
mov ecx, 2
mov esi, dword [esp]
mov dword [esp + 0x10], ecx
cmp ecx, 2
je 0x50edc1
jmp 0x50ef40
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
nop
movzx eax, ax
mov ebx, dword [esp + 4]
sub ebx, eax
cmp ebx, dword [esp + 0x44]
jb 0x50f370
mov ecx, dword [esp + 0x50]
lea eax, [ecx - 1]
cmp ecx, 1
mov dword [esp + 0x50], eax
jg 0x50e9d0
jmp 0x50f370
bsf edx, esi
shr edx, 3
add edx, edi
mov esi, dword [esp + 0x48]
sub edx, ecx
add edx, 4
mov ecx, dword [esp + 0x90]
cmp ecx, dword [esp + 0x28]
mov dword [esp + 0x14], ebp
jae 0x50efb7
mov edi, dword [esp + 0x10]
lea ecx, [edi + edx]
cmp ecx, dword [esp + 0x24]
je 0x50efca
mov dword [esp + 0xd8], edx
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xf8], eax
mov esi, eax
jmp 0x50f04d
mov dword [esp + 0xd8], edx
mov dword [esp + 0xf8], esi
jmp 0x50f049
mov ebp, edx
lea ecx, [edx*8]
mov eax, dword [esp + 0xc]
rol eax, cl
cmp ebx, esi
mov edi, dword [esp + 0x20]
mov edx, esi
mov ecx, esi
jbe 0x50f000
nop word cs:[eax + eax]
nop
mov esi, dword [ecx]
xor esi, eax
jne 0x50f022
add ecx, 4
add edx, 4
cmp ecx, ebx
jb 0x50eff0
cmp ecx, edi
jae 0x50f02a
sub edi, edx
lea edx, [ecx + edi]
cmp byte [ecx], al
jne 0x50f01a
add ecx, 1
shr eax, 8
add edi, 0xffffffff
jne 0x50f009
mov ecx, edx
mov eax, dword [esp + 0x48]
mov edx, ecx
jmp 0x50f02e
bsf eax, esi
shr eax, 3
add edx, eax
mov eax, dword [esp + 0x48]
sub ebp, eax
add ebp, edx
mov dword [esp + 0xd8], ebp
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xf8], eax
mov esi, eax
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x98], eax
mov dword [esp + 0xb0], esi
lea eax, [esi + 4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x68]
lea ebx, [ecx + eax]
xor esi, esi
mov edx, edi
nop word cs:[eax + eax]
nop
mov edi, esi
mov ecx, edx
mov eax, dword [esp + 0x10]
lea ebp, [eax + esi]
cmp ebp, dword [esp + 0x24]
jb 0x50f0a1
lea esi, [edi - 4]
lea edx, [ecx - 4]
mov eax, dword [esp + 0xc]
cmp dword [ebx + edi - 5], eax
je 0x50f080
lea edx, [edi + ebx]
add edx, 0xffffffff
cmp ebp, dword [esp + 0xb0]
jbe 0x50f358
mov eax, dword [esp + 0xe4]
cmp byte [edi + ebx - 2], al
mov esi, dword [esp]
mov eax, dword [esp + 4]
jne 0x50f10d
mov edx, dword [esp + 0xf8]
sub edx, eax
sub edx, dword [esp + 0x68]
sub edx, edi
lea eax, [edx + ebp]
add eax, 1
lea edi, [esp + 0x9a]
mov ebp, dword [esp + 0xb0]
nop dword [eax + eax]
lea edx, [ecx - 1]
cmp edx, ebp
jbe 0x50f317
movzx ebx, byte [ecx - 2]
lea esi, [edi - 1]
mov ecx, edx
cmp bl, byte [edi]
mov edi, esi
mov esi, dword [esp]
je 0x50f0f0
mov eax, dword [esp + 0x10]
mov ebx, eax
sub ebx, edx
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x90]
cmp edx, edi
jae 0x50f12d
mov ebp, dword [esp + 0x14]
jmp 0x50f209
sub eax, ebx
cmp eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x14]
jne 0x50f209
cmp dword [esp + 0xec], edi
jae 0x50f209
mov dword [esp + 0x10], ebx
mov ecx, ebx
neg ecx
shl ecx, 3
mov ebx, dword [esp + 0xc]
rol ebx, cl
mov dword [esp + 0x98], ebx
mov eax, ebx
shr eax, 0x18
mov dword [esp + 0x24], eax
mov ebp, dword [esp + 0xf0]
mov edi, dword [esp + 0xd0]
mov esi, dword [esp + 0xc0]
mov edx, esi
mov ecx, edi
mov eax, ebp
add esi, 1
mov dword [esp + 4], esi
cmp esi, dword [esp + 0x2c]
jb 0x50f1a1
lea esi, [edx - 4]
lea edi, [ecx - 4]
lea ebp, [eax + 4]
cmp dword [edx - 3], ebx
je 0x50f180
mov esi, dword [esp + 4]
cmp esi, dword [esp + 0x8c]
jbe 0x50f360
mov ebx, dword [esp + 0x24]
cmp byte [edx], bl
mov esi, dword [esp]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
jne 0x50f1f5
add dword [esp + 4], eax
lea eax, [esp + 0x9a]
cmp edx, dword [esp + 0x8c]
jbe 0x50f34f
movzx ecx, byte [edx - 1]
add edx, 0xffffffff
lea esi, [eax - 1]
cmp cl, byte [eax]
mov eax, esi
mov esi, dword [esp]
je 0x50f1d0
add edx, 1
mov ecx, edx
mov ebx, dword [esp + 0x10]
add ebx, dword [esp + 0xd0]
sub ebx, ecx
mov edx, dword [esp + 0x90]
mov ecx, edx
sub ecx, ebx
mov eax, dword [esp + 0x44]
cmp ecx, eax
cmovbe ecx, eax
mov eax, edx
sub eax, ecx
mov edx, dword [esp + 0xd8]
add eax, edx
cmp edx, ebp
ja 0x50f25a
cmp eax, ebp
jb 0x50f25a
mov eax, dword [esp + 0x90]
sub eax, ebp
mov ebx, dword [esp + 0xd8]
add ebx, eax
mov eax, ebx
not eax
add eax, edi
cmp eax, 3
cmovb ebx, edi
mov dword [esp + 0x10], 2
mov edx, dword [esp + 0x30]
jmp 0x50ef49
mov edx, ecx
not edx
add edx, edi
cmp edx, 3
mov ebx, ecx
cmovb ebx, edi
mov dword [esp + 0x10], 2
cmp dword [esp + 0x5c], 0
jne 0x50f2b4
cmp edx, 3
jb 0x50f2b4
cmp eax, ebp
cmovae eax, ebp
cmp esi, eax
jae 0x50f2bd
mov edx, dword [esp + 0xa8]
sub edx, ecx
cmp edx, 0xffff
ja 0x50f370
mov edx, dword [esp + 0x30]
add edx, ecx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x18], esi
mov esi, eax
jmp 0x50f2c1
mov edx, dword [esp + 0x30]
jmp 0x50ef49
mov edx, dword [esp + 0x30]
movzx eax, cx
mov ebx, dword [esp + 0x4c]
movzx eax, word [ebx + eax*2 + 0x20000]
sub ecx, eax
mov ebx, ecx
jae 0x50ef49
jmp 0x50f370
mov edi, dword [esp + 0x20]
cmp ecx, dword [esp + 0x90]
mov esi, ebp
jae 0x50f2f9
mov dl, byte [ebx]
xor ebx, ebx
cmp dl, byte [ecx]
sete bl
add ecx, ebx
mov ebp, dword [esp + 0x38]
sub ecx, dword [esp + 0x94]
lea ebx, [ecx + 4]
cmp eax, edi
mov dword [esp], esi
jb 0x50eb80
jmp 0x50ece7
mov edx, eax
jmp 0x50f10d
mov esi, dword [esp]
mov edx, dword [esp + 0x30]
cmp ebx, dword [esp + 0x20]
jae 0x50f336
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
sub ebx, dword [esp + 0x94]
sub ebx, ebp
add ebx, 4
cmp ebx, esi
jg 0x50ecd2
jmp 0x50ed70
mov ecx, dword [esp + 4]
jmp 0x50f1f5
mov esi, dword [esp]
jmp 0x50f10d
mov esi, dword [esp]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
jmp 0x50f1f5
cmp esi, dword [esp + 0xb8]
je 0x50fcfa
mov ebp, dword [esp + 0x18]
cmp ebp, dword [esp + 0x104]
mov eax, dword [esp + 0x1c]
jae 0x50f3ab
mov dword [esp + 0xc8], ebp
mov dword [esp + 0xc0], eax
cmp ebp, dword [esp + 0x78]
jb 0x50e752
jmp 0x50f714
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x78]
mov ebp, dword [esp + 0x9c]
jae 0x50f40c
mov ebx, ecx
mov edi, dword [esp + 0x40]
sub ebx, edi
cmp ebx, 0x11
jg 0x50f410
mov edx, dword [esp + 0x58]
add edx, 0xfffffffc
cmp dword [esp + 0x110], edx
mov edx, dword [esp + 0xb8]
lea eax, [edx + ebx - 4]
mov ebx, dword [esp + 0xb4]
cmova ebx, eax
sub edi, ecx
add edi, ebx
test edi, edi
jle 0x50f410
add ecx, edi
mov dword [esp + 0x64], ecx
add dword [esp + 0xa4], edi
sub edx, edi
mov dword [esp + 0xb8], edx
jmp 0x50f410
mov ebx, dword [esp + 0x7c]
mov dword [esp], esi
mov edi, dword [esp + 0x40]
sub edi, dword [esp + 0x54]
mov eax, edi
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0x13c], 0
je 0x50f446
shr edx, 7
add edx, ebp
lea eax, [edi + edx]
add eax, 9
cmp eax, dword [esp + 0xc4]
ja 0x513ebd
lea esi, [ebp + 1]
cmp edi, 0xf
mov edx, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0xb4], ebx
jb 0x50f4b1
lea eax, [edx - 0xf]
mov byte [ebp], 0xf0
cmp eax, 0xff
jb 0x50f4a6
lea eax, [edx - 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 edx, dword [esp + 0x40]
add esp, 0xc
mov eax, edi
shl eax, 8
lea esi, [edi + ebp]
add esi, 2
sub edi, eax
lea eax, [edx + edi]
add eax, 0xfffffef2
mov ecx, dword [esp + 0x40]
mov byte [esi], al
add esi, 1
jmp 0x50f4bd
mov eax, edx
shl al, 4
mov byte [ebp], al
mov ecx, dword [esp + 0x40]
lea ebp, [esi + ecx]
mov ecx, dword [esp + 0x54]
sub ebp, ecx
mov eax, esi
add esi, 8
cmp ebp, esi
mov ebx, esi
cmova ebx, ebp
lea edi, [eax + edx]
mov edx, eax
not edx
mov dword [esp + 4], edx
add ebx, edx
mov dword [esp + 0x54], ecx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0xc], ebx
cmp ebx, 0x18
mov ebx, eax
jb 0x50f5b1
cmp ebp, esi
cmova esi, ebp
add esi, dword [esp + 4]
and esi, 0xfffffff8
mov eax, dword [esp + 0x54]
add eax, esi
add eax, 8
cmp ebx, eax
jae 0x50f525
lea eax, [ebx + esi]
add eax, 8
mov esi, dword [esp + 0x54]
mov edx, esi
mov ecx, ebx
cmp esi, eax
jb 0x50f5b1
mov esi, ebx
mov ecx, dword [esp + 0xc]
shr ecx, 3
add ecx, 1
mov dword [esp + 0xc], ecx
and ecx, 0xfffffffc
lea eax, [ecx - 4]
mov edx, eax
shr edx, 2
add edx, 1
test eax, eax
je 0x50f582
mov ebp, edx
and ebp, 0xfffffffe
xor ebx, ebx
mov eax, dword [esp + 0x54]
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
movups xmm0, xmmword [eax + ebx*8 + 0x20]
movups xmm1, xmmword [eax + ebx*8 + 0x30]
movups xmmword [esi + ebx*8 + 0x20], xmm0
movups xmmword [esi + ebx*8 + 0x30], xmm1
add ebx, 8
add ebp, 0xfffffffe
jne 0x50f552
jmp 0x50f588
xor ebx, ebx
mov eax, dword [esp + 0x54]
test dl, 1
je 0x50f59f
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 + 0xc], ecx
je 0x50f5c5
mov eax, dword [esp + 0x54]
lea edx, [eax + ecx*8]
lea ecx, [esi + ecx*8]
mov ebx, esi
mov esi, ebx
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, edi
jb 0x50f5b3
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0xb4]
lea ecx, [ebx - 4]
mov word [edi], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x13c], 0
je 0x50f603
shr edx, 7
lea eax, [edi + edx]
add eax, 8
cmp eax, dword [esp + 0xc4]
ja 0x513ece
add edi, 2
mov edx, dword [esp + 0x9c]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x50f6ca
add al, 0xf
mov byte [edx], al
lea eax, [ebx - 0x13]
cmp eax, 0x1fe
jb 0x50f66a
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 + 0x34]
lea eax, [eax + ebp*2]
lea edi, [esi + eax]
add edi, 4
imul eax, ebp, 0xfffffe02
add eax, ebx
add eax, 0xfffffdef
mov ebp, dword [esp + 0x18]
cmp eax, 0xff
mov esi, dword [esp]
jb 0x50f683
add eax, 0xffffff01
mov byte [edi], 0xff
add edi, 1
mov byte [edi], al
add edi, 1
mov eax, dword [esp + 0x40]
add eax, ebx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x40], eax
mov dword [esp + 0x9c], edi
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x6c], eax
mov dword [esp + 0xc8], ebp
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc0], eax
mov ecx, dword [esp + 0xb8]
jmp 0x50e71b
add al, cl
mov byte [edx], al
mov eax, dword [esp + 0x40]
add eax, ebx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x40], eax
mov dword [esp + 0x9c], edi
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x18]
mov dword [esp + 0xc8], ebp
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc0], eax
mov ecx, dword [esp + 0xb8]
jmp 0x50e718
mov ecx, dword [esp + 0x78]
mov edi, dword [esp + 0x64]
cmp edi, ecx
jae 0x50f75a
mov eax, ecx
sub eax, edi
mov ebx, dword [esp + 0xb8]
sub ebx, eax
mov edi, ebx
mov dword [esp + 0xb8], ebx
cmp ebx, 3
mov edi, dword [esp + 0x9c]
jg 0x50f763
mov dword [esp + 0x64], ebp
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xb8], esi
jmp 0x50f76e
mov edi, dword [esp + 0x9c]
jmp 0x50f76e
add dword [esp + 0xa4], eax
mov dword [esp + 0x64], ecx
mov dword [esp], esi
mov esi, dword [esp + 0x40]
sub esi, dword [esp + 0x54]
mov eax, esi
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0x13c], 0
je 0x50f7a4
shr edx, 7
add edx, edi
lea eax, [esi + edx]
add eax, 9
cmp eax, dword [esp + 0xc4]
ja 0x513ed8
lea ebx, [edi + 1]
cmp esi, 0xf
mov edx, esi
jb 0x50f7fe
lea eax, [edx - 0xf]
mov byte [edi], 0xf0
cmp eax, 0xff
jb 0x50f80d
lea eax, [edx - 0x10e]
mov ecx, 0x80808081
mov esi, edx
mul ecx
mov ebp, edx
shr ebp, 7
lea eax, [ebp + 1]
push eax
push 0xff
push ebx
call sub.msvcrt.dll_memset
mov edx, esi
add esp, 0xc
mov eax, ebp
shl eax, 8
lea esi, [edi + ebp]
add esi, 2
sub ebp, eax
lea eax, [edx + ebp]
add eax, 0xfffffef2
mov ecx, dword [esp + 0x40]
jmp 0x50f813
mov eax, edx
shl al, 4
mov byte [edi], al
mov ecx, dword [esp + 0x40]
mov esi, ebx
jmp 0x50f818
mov ecx, dword [esp + 0x40]
mov esi, ebx
mov byte [esi], al
add esi, 1
lea ebp, [esi + ecx]
mov ecx, dword [esp + 0x54]
sub ebp, ecx
lea ebx, [esi + 8]
cmp ebp, ebx
mov eax, esi
mov esi, ebx
cmova esi, ebp
mov dword [esp + 0xc], edx
lea edi, [eax + edx]
mov edx, eax
not edx
mov dword [esp + 0x14], edx
add esi, edx
mov dword [esp + 0x54], ecx
mov edx, ecx
mov ecx, eax
mov dword [esp + 4], esi
cmp esi, 0x18
mov dword [esp + 0x34], eax
jb 0x50f91c
mov esi, eax
cmp ebp, ebx
cmova ebx, ebp
add ebx, dword [esp + 0x14]
and ebx, 0xfffffff8
mov eax, dword [esp + 0x54]
add eax, ebx
add eax, 8
cmp esi, eax
jae 0x50f888
lea eax, [esi + ebx]
add eax, 8
mov ebx, dword [esp + 0x54]
mov edx, ebx
mov ecx, esi
cmp ebx, eax
jb 0x50f91c
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 0x50f8e7
mov ebp, edx
and ebp, 0xfffffffe
xor eax, eax
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x34]
movups xmm0, xmmword [esi + eax*8]
movups xmm1, xmmword [esi + eax*8 + 0x10]
movups xmmword [ebx + eax*8], xmm0
movups xmmword [ebx + eax*8 + 0x10], xmm1
movups xmm0, xmmword [esi + eax*8 + 0x20]
movups xmm1, xmmword [esi + eax*8 + 0x30]
movups xmmword [ebx + eax*8 + 0x20], xmm0
movups xmmword [ebx + eax*8 + 0x30], xmm1
add eax, 8
add ebp, 0xfffffffe
jne 0x50f8b7
jmp 0x50f8ed
xor eax, eax
mov ebx, dword [esp + 0x34]
test dl, 1
je 0x50f908
mov edx, dword [esp + 0x54]
movups xmm0, xmmword [edx + eax*8]
movups xmm1, xmmword [edx + eax*8 + 0x10]
movups xmmword [ebx + eax*8], xmm0
movups xmmword [ebx + eax*8 + 0x10], xmm1
cmp dword [esp + 4], ecx
je 0x50f92e
mov eax, dword [esp + 0x54]
lea edx, [eax + ecx*8]
mov eax, dword [esp + 0x34]
lea ecx, [eax + ecx*8]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, edi
jb 0x50f91c
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x7c]
add ecx, 0xfffffffc
mov word [edi], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x13c], 0
mov ebx, dword [esp + 0xc]
je 0x50f96d
shr edx, 7
lea eax, [edi + edx]
add eax, 8
cmp eax, dword [esp + 0xc4]
ja 0x513ee1
add edi, 2
mov edx, dword [esp + 0x9c]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x50f9f8
add al, 0xf
mov byte [edx], al
mov esi, dword [esp + 0x7c]
lea eax, [esi - 0x13]
cmp eax, 0x1fe
jb 0x50f9d4
lea eax, [esi - 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
lea eax, [ebx + ebp*2]
mov ecx, dword [esp + 0x34]
lea edi, [ecx + eax]
add edi, 4
imul eax, ebp, 0xfffffe02
add eax, esi
add eax, 0xfffffdef
mov edx, dword [esp + 0x18]
cmp eax, 0xff
jb 0x50f9ea
add eax, 0xffffff01
mov byte [edi], 0xff
add edi, 1
mov byte [edi], al
add edi, 1
mov dword [esp + 0x9c], edi
jmp 0x50fa07
add al, cl
mov byte [edx], al
mov dword [esp + 0x9c], edi
mov edx, dword [esp + 0x18]
mov dword [esp + 0xc8], edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0xf0], eax
jmp 0x50db0a
mov dword [esp + 0x64], ebp
jmp 0x50fa50
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x64], eax
mov edi, dword [esp + 0x38]
mov ebx, edi
sub ebx, dword [esp + 0x78]
mov eax, ebx
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0x13c], 0
mov ecx, dword [esp + 0x9c]
je 0x50fa8c
shr edx, 7
add edx, ecx
lea eax, [ebx + edx]
add eax, 9
cmp eax, dword [esp + 0xc4]
ja 0x513b8b
lea esi, [ecx + 1]
cmp ebx, 0xf
mov dword [esp + 4], ebx
jb 0x50faff
lea eax, [ebx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
mov ebp, dword [esp + 0x78]
jb 0x50faf4
lea eax, [ebx - 0x10e]
mov dword [esp + 0x9c], ecx
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 + 0x9c]
lea esi, [ecx + edi]
add esi, 2
sub edi, eax
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov edi, dword [esp + 0x38]
mov byte [esi], al
add esi, 1
mov ecx, dword [esp + 4]
jmp 0x50fb0c
mov eax, ebx
shl al, 4
mov byte [ecx], al
mov ebp, dword [esp + 0x78]
mov ecx, ebx
lea ebx, [edi + esi]
sub ebx, ebp
lea edi, [esi + 8]
cmp ebx, edi
mov eax, edi
cmova eax, ebx
add ecx, esi
mov dword [esp + 0xc], ecx
mov edx, ebp
mov ebp, esi
not ebp
add eax, ebp
mov dword [esp + 0x78], edx
mov ecx, esi
cmp eax, 0x18
jb 0x50fbe9
cmp ebx, edi
cmova edi, ebx
add edi, ebp
and edi, 0xfffffff8
mov ecx, dword [esp + 0x78]
add ecx, edi
add ecx, 8
cmp esi, ecx
jae 0x50fb64
add edi, esi
add edi, 8
mov ebx, dword [esp + 0x78]
mov edx, ebx
mov ecx, esi
cmp ebx, edi
jb 0x50fbe9
shr eax, 3
add eax, 1
mov ecx, eax
and ecx, 0xfffffffc
lea edi, [ecx - 4]
mov edx, edi
shr edx, 2
add edx, 1
test edi, edi
je 0x50fbba
mov ebx, edx
and ebx, 0xfffffffe
xor edi, edi
mov ebp, dword [esp + 0x78]
movups xmm0, xmmword [ebp + edi*8]
movups xmm1, xmmword [ebp + edi*8 + 0x10]
movups xmmword [esi + edi*8], xmm0
movups xmmword [esi + edi*8 + 0x10], xmm1
movups xmm0, xmmword [ebp + edi*8 + 0x20]
movups xmm1, xmmword [ebp + edi*8 + 0x30]
movups xmmword [esi + edi*8 + 0x20], xmm0
movups xmmword [esi + edi*8 + 0x30], xmm1
add edi, 8
add ebx, 0xfffffffe
jne 0x50fb89
jmp 0x50fbbc
xor edi, edi
test dl, 1
je 0x50fbd7
mov edx, dword [esp + 0x78]
movups xmm0, xmmword [edx + edi*8]
movups xmm1, xmmword [edx + edi*8 + 0x10]
movups xmmword [esi + edi*8], xmm0
movups xmmword [esi + edi*8 + 0x10], xmm1
cmp eax, ecx
mov ebx, dword [esp + 0xc]
je 0x50fc02
mov eax, dword [esp + 0x78]
lea edx, [eax + ecx*8]
lea ecx, [esi + ecx*8]
mov ebx, dword [esp + 0xc]
nop dword [eax]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, ebx
jb 0x50fbf0
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x7c]
add ecx, 0xfffffffc
mov word [ebx], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x13c], 0
mov edi, dword [esp + 0x9c]
je 0x50fc44
shr edx, 7
lea eax, [ebx + edx]
add eax, 8
cmp eax, dword [esp + 0xc4]
ja 0x513ba1
add ebx, 2
mov al, byte [edi]
cmp ecx, 0xf
jb 0x50fcc8
add al, 0xf
mov byte [edi], al
mov edx, dword [esp + 0x7c]
lea eax, [edx - 0x13]
cmp eax, 0x1fe
jb 0x50fca3
lea eax, [edx - 0x211]
mov ecx, 0x80808081
mov ebp, edx
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi + edi]
add eax, 2
push eax
push 0xff
push ebx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 4]
lea eax, [eax + edi*2]
lea ebx, [esi + eax]
add ebx, 4
imul eax, edi, 0xfffffe02
add eax, ebp
add eax, 0xfffffdef
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x6c]
cmp eax, 0xff
mov esi, dword [esp + 0x58]
jb 0x50fcc1
add eax, 0xffffff01
mov byte [ebx], 0xff
add ebx, 1
mov byte [ebx], al
add ebx, 1
jmp 0x50fcd8
add al, cl
mov byte [edi], al
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x6c]
mov esi, dword [esp + 0x58]
mov dword [esp + 0x9c], ebx
mov eax, esi
cmp esi, dword [esp + 0xcc]
mov edi, dword [esp + 0xf4]
jbe 0x50cec7
jmp 0x5136c0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0xc8], eax
mov edx, dword [esp + 0x64]
mov ebx, edx
mov edi, dword [esp + 0x40]
sub ebx, edi
cmp edx, dword [esp + 0x78]
cmovae ebx, dword [esp + 0x7c]
mov ebp, edi
sub ebp, dword [esp + 0x54]
mov eax, ebp
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0x13c], 0
mov ecx, dword [esp + 0x9c]
je 0x50fd5d
shr edx, 7
add edx, ecx
lea eax, [edx + ebp]
add eax, 9
cmp eax, dword [esp + 0xc4]
ja 0x513d30
mov dword [esp + 0xb4], ebx
lea ebx, [ecx + 1]
cmp ebp, 0xf
mov edx, ebp
mov dword [esp], ebp
jb 0x50fdc8
lea eax, [edx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x50fdc1
mov esi, ecx
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 + 0xc]
add esp, 0xc
mov eax, edi
shl eax, 8
lea ebx, [esi + edi]
add ebx, 2
sub edi, eax
lea eax, [edx + edi]
add eax, 0xfffffef2
mov edi, dword [esp + 0x40]
mov byte [ebx], al
add ebx, 1
jmp 0x50fdcf
mov eax, edx
shl al, 4
mov byte [ecx], al
lea ebp, [edi + ebx]
mov ecx, dword [esp + 0x54]
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 + 4], edx
add edi, edx
mov dword [esp + 0x54], ecx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0xc], edi
cmp edi, 0x18
mov edi, eax
jb 0x50fec3
cmp ebp, ebx
cmova ebx, ebp
add ebx, dword [esp + 4]
and ebx, 0xfffffff8
mov eax, dword [esp + 0x54]
add eax, ebx
add eax, 8
cmp edi, eax
jae 0x50fe37
lea eax, [edi + ebx]
add eax, 8
mov ebx, dword [esp + 0x54]
mov edx, ebx
mov ecx, edi
cmp ebx, eax
jb 0x50fec3
mov ebx, edi
mov ecx, dword [esp + 0xc]
shr ecx, 3
add ecx, 1
mov dword [esp + 0xc], ecx
and ecx, 0xfffffffc
lea eax, [ecx - 4]
mov edx, eax
shr edx, 2
add edx, 1
test eax, eax
je 0x50fe94
mov ebp, edx
and ebp, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x54]
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 0x50fe64
jmp 0x50fe9a
xor edi, edi
mov eax, dword [esp + 0x54]
test dl, 1
je 0x50feb1
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 + 0xc], ecx
je 0x50fed7
mov eax, dword [esp + 0x54]
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 0x50fec5
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xb4]
add ecx, 0xfffffffc
mov word [esi], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x13c], 0
mov edi, dword [esp + 0x9c]
je 0x50ff1c
shr edx, 7
lea eax, [esi + edx]
add eax, 8
cmp eax, dword [esp + 0xc4]
ja 0x513d41
add esi, 2
mov al, byte [edi]
cmp ecx, 0xf
jb 0x50ffbd
add al, 0xf
mov byte [edi], al
mov eax, dword [esp + 0xb4]
add eax, 0xffffffed
cmp eax, 0x1fe
mov edx, dword [esp + 0x64]
jb 0x50ff99
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x40]
add ebp, eax
cmp edx, ebp
cmovb ebp, edx
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
mov edx, dword [esp + 0x70]
add esp, 0xc
mov eax, dword [esp]
lea eax, [eax + edi*2]
imul ecx, edi, 0xfffffe02
lea esi, [ebx + eax]
add esi, 4
lea eax, [ecx + ebp]
add eax, 0xfffffdef
cmp eax, 0xff
mov edi, dword [esp + 0xb4]
jb 0x50ffb2
add eax, 0xffffff01
mov byte [esi], 0xff
add esi, 1
mov ecx, dword [esp + 0x40]
mov byte [esi], al
add esi, 1
jmp 0x50ffd0
add al, cl
mov byte [edi], al
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0xb4]
lea eax, [ecx + edi]
mov ebx, edx
mov dword [esp + 4], eax
sub ebx, eax
mov eax, ebx
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0x13c], 0
je 0x510006
shr edx, 7
add edx, esi
lea eax, [ebx + edx]
add eax, 9
cmp eax, dword [esp + 0xc4]
ja 0x513d09
lea ebp, [esi + 1]
cmp ebx, 0xf
mov dword [esp], esi
jb 0x510063
lea eax, [ebx - 0xf]
mov byte [esi], 0xf0
cmp eax, 0xff
jb 0x510057
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
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov ecx, dword [esp + 0x64]
mov byte [ebp], al
add ebp, 1
jmp 0x51006e
mov eax, ebx
shl al, 4
mov byte [esi], al
mov ecx, dword [esp + 0x64]
add ebx, ebp
mov dword [esp + 0xc], ebx
lea ebx, [ecx + 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 + 0x34], ecx
cmp ecx, 0x18
jb 0x51016b
cmp ebx, esi
cmova esi, ebx
add esi, eax
and esi, 0xfffffff8
mov edx, dword [esp + 0xb4]
add edx, esi
mov eax, dword [esp + 0x40]
add eax, edx
add eax, 8
cmp ebp, eax
jae 0x5100d2
lea eax, [esi + ebp]
add eax, 8
mov ecx, dword [esp + 4]
mov edx, ecx
mov edi, ebp
cmp ecx, eax
jb 0x51016b
mov eax, dword [esp + 0x34]
shr eax, 3
add eax, 1
mov dword [esp + 0x34], eax
mov esi, eax
and esi, 0xfffffffc
lea eax, [esi - 4]
mov ecx, eax
shr ecx, 2
add ecx, 1
test eax, eax
je 0x510133
mov edx, ecx
and edx, 0xfffffffe
mov eax, dword [esp + 4]
lea ebx, [eax + 0x30]
xor edi, edi
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 0x510102
jmp 0x510135
xor edi, edi
test cl, 1
je 0x510151
mov eax, dword [esp + 4]
movups xmm0, xmmword [eax + edi*8]
movups xmm1, xmmword [eax + edi*8 + 0x10]
movups xmmword [ebp + edi*8], xmm0
movups xmmword [ebp + edi*8 + 0x10], xmm1
cmp dword [esp + 0x34], esi
mov ebx, dword [esp + 0xc]
je 0x510181
mov eax, dword [esp + 4]
lea edx, [eax + esi*8]
lea edi, [esi*8]
add edi, ebp
mov ebx, dword [esp + 0xc]
movsd xmm0, qword [edx]
movsd qword [edi], xmm0
add edi, 8
add edx, 8
cmp edi, ebx
jb 0x51016f
mov eax, dword [esp + 0x64]
sub eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0xb8]
add ecx, 0xfffffffc
mov word [ebx], ax
mov eax, ecx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x13c], 0
mov esi, dword [esp]
je 0x5101c5
shr edx, 7
lea eax, [ebx + edx]
add eax, 8
cmp eax, dword [esp + 0xc4]
ja 0x513d09
add ebx, 2
mov al, byte [esi]
cmp ecx, 0xf
jb 0x510245
add al, 0xf
mov byte [esi], al
mov esi, dword [esp + 0xb8]
lea eax, [esi - 0x13]
cmp eax, 0x1fe
jb 0x510229
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 ebx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x64]
lea eax, [eax + edi*2]
sub eax, dword [esp + 4]
lea ebx, [eax + ebp]
add ebx, 4
imul eax, edi, 0xfffffe02
add eax, esi
add eax, 0xfffffdef
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x6c]
mov esi, dword [esp + 0x58]
cmp eax, 0xff
jae 0x50fcb6
jmp 0x50fcc1
add al, cl
mov byte [esi], al
jmp 0x50fccc
mov eax, dword [esp + 0x4c]
mov al, byte [eax + 0x4001a]
mov byte [esp + 0xac], al
neg al
sbb eax, eax
mov dword [esp + 0xd8], eax
push 0x10030
call fcn.004f5d40
add esp, 4
xor edi, edi
mov dword [esp + 0x68], eax
test eax, eax
je 0x513aff
mov eax, dword [ebx*4 + 0x687788]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0xf4]
lea ebx, [edx + ecx]
add ebx, 0xfffffff4
xor ecx, ecx
cmp dword [esp + 0x13c], 2
setne cl
mov ebp, dword [esp + 0x12c]
add esi, ebp
mov edi, dword [esp + 0x130]
mov dword [edi], 0
lea ecx, [ecx + ecx*4]
add ecx, esi
add ecx, 0xfffffffb
mov dword [esp + 0x7c], ecx
mov ecx, edx
cmp eax, 0xfff
mov edx, 0xfff
cmovb edx, eax
mov dword [esp + 0x9c], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x100], ebx
cmp ebx, ecx
jb 0x5139d8
mov eax, ebp
mov edx, dword [esp + 0xf4]
lea esi, [ecx + edx]
add esi, 0xfffffffb
lea edi, [esi - 3]
mov dword [esp + 0xc], edi
mov dword [esp + 0x3c], esi
lea esi, [esi - 1]
mov dword [esp + 0x108], esi
lea edx, [edx + ecx - 5]
mov dword [esp + 0xb4], edx
mov edx, dword [esp + 0x68]
lea esi, [edx + 0x4c]
mov dword [esp + 0x110], esi
add edx, 0x50
mov dword [esp + 0x114], edx
mov dword [esp + 0x2c], ecx
mov ebx, ecx
jmp 0x510366
add dword [esp + 0x28], 1
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x28]
cmp ebx, dword [esp + 0x100]
ja 0x5139d8
mov dword [esp + 0x84], ebp
mov ebp, dword [esp + 0x4c]
mov ecx, dword [ebp + 0x40004]
mov eax, dword [ebp + 0x4000c]
mov dword [esp + 0x24], eax
mov eax, ebx
sub eax, ecx
mov edx, dword [ebp + 0x40010]
lea esi, [edx + 0x10000]
lea edi, [eax - 0xffff]
mov dword [esp + 0xec], esi
cmp esi, eax
mov esi, ecx
mov dword [esp + 0xb0], edx
cmova edi, edx
mov edx, eax
mov dword [esp + 0x44], edi
mov eax, dword [esp + 0x24]
add ecx, eax
mov dword [esp + 0x48], ecx
mov ecx, ebx
mov dword [esp + 0x28], ebx
mov eax, dword [ebx]
mov dword [esp], eax
mov eax, dword [ebp + 0x40014]
cmp eax, edx
mov edi, 0xffff
mov dword [esp + 0x50], edx
mov dword [esp + 0x60], esi
jae 0x5104bf
lea ecx, [eax + esi]
mov ebx, esi
mov esi, dword [esp + 0x28]
mov edx, esi
sub edx, ecx
mov ecx, eax
not ecx
add ecx, esi
test dl, 1
je 0x510430
imul edx, dword [ebx + eax], 0x9e3779b1
shr edx, 0x11
mov esi, eax
mov ebx, ebp
sub esi, dword [ebp + edx*4]
cmp esi, 0xffff
cmovae esi, edi
movzx edi, ax
mov word [ebp + edi*2 + 0x20000], si
mov edi, 0xffff
mov dword [ebp + edx*4], eax
mov ebx, dword [esp + 0x60]
add eax, 1
cmp ecx, ebx
mov edx, dword [esp + 0x50]
je 0x5104bf
mov esi, ebx
add eax, 1
nop word cs:[eax + eax]
nop dword [eax + eax]
lea ecx, [eax - 1]
imul edx, dword [esi + eax - 1], 0x9e3779b1
shr edx, 0x11
mov ebx, esi
mov esi, dword [ebp + edx*4]
not esi
add esi, eax
cmp esi, 0xffff
cmovae esi, edi
movzx edi, cx
mov word [ebp + edi*2 + 0x20000], si
mov edi, 0xffff
mov dword [ebp + edx*4], ecx
imul ecx, dword [ebx + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebp + ecx*4]
cmp edx, 0xffff
cmovae edx, edi
movzx esi, ax
mov word [ebp + esi*2 + 0x20000], dx
mov esi, ebx
mov edx, dword [esp + 0x50]
mov dword [ebp + ecx*4], eax
lea ecx, [eax + 2]
add eax, 1
cmp eax, edx
mov eax, ecx
jb 0x510450
mov esi, dword [esp + 0x28]
mov eax, esi
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x38], eax
mov edi, dword [ebp + 0x40008]
mov dword [ebp + 0x40014], edx
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov eax, dword [ebp + eax*4]
mov dword [esp + 8], eax
mov edx, dword [esp]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
mov dword [esp + 0xd0], edx
xor eax, edx
or eax, ecx
sete byte [esp + 0x5c]
mov eax, esi
neg eax
mov dword [esp + 0xbc], eax
mov eax, 0xfffffffc
sub eax, esi
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0xb0]
mov edx, ecx
mov eax, dword [esp + 0x24]
sub edx, eax
mov dword [esp + 0xf0], edx
lea ebp, [esi + 4]
lea edx, [esi + 8]
mov dword [esp + 0xa0], edx
lea edx, [eax - 4]
mov dword [esp + 0x90], edx
lea edx, [edi + ecx]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x48]
add edx, 4
mov dword [esp + 0xf8], edx
lea edx, [edi + eax]
mov dword [esp + 0xcc], edx
lea ecx, [edi + ecx + 4]
mov dword [esp + 0xa8], ecx
lea ecx, [eax + esi]
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xd4], edi
lea eax, [edi + eax - 1]
mov dword [esp + 0xc4], eax
mov dword [esp + 0x14], 3
mov dword [esp + 0x8c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x1c], ebp
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [esp + 8]
cmp edi, dword [esp + 0x44]
jb 0x511060
test eax, eax
jle 0x511060
mov dword [esp + 0x10], eax
mov dword [esp + 0x34], 0
cmp byte [esp + 0xac], 0
mov eax, dword [esp + 0x50]
je 0x510640
mov edx, eax
sub edx, edi
cmp edx, 8
jae 0x510640
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x34]
cmp ebx, edx
mov dword [esp + 0x14], edx
je 0x510970
jmp 0x510a40
mov ebx, dword [esp + 0x24]
sub ebx, edi
jbe 0x5106a0
cmp edi, dword [esp + 0x90]
ja 0x510619
mov edx, dword [esp + 0xd4]
add edi, edx
mov edx, dword [esp]
cmp dword [edi], edx
jne 0x5106f3
add ebx, esi
mov eax, dword [esp + 0x3c]
cmp ebx, eax
mov ecx, ebx
cmova ecx, eax
add edi, 4
mov dword [esp + 4], ecx
lea eax, [ecx - 3]
cmp eax, ebp
jbe 0x511007
mov edx, dword [ebp]
xor edx, dword [edi]
je 0x510710
bsf edx, edx
shr edx, 3
jmp 0x51077d
mov eax, dword [esp + 0x60]
lea ebx, [eax + edi]
mov eax, dword [esp + 0x14]
movzx edx, word [esi + eax - 1]
cmp dx, word [eax + ebx - 1]
mov edx, eax
jne 0x5108f0
mov eax, dword [esp]
cmp dword [ebx], eax
jne 0x5108f0
lea edx, [ebx + 4]
cmp dword [esp + 0xc], ebp
jbe 0x5107d4
mov eax, dword [ebp]
xor eax, dword [edx]
je 0x5107ca
bsf ebp, eax
shr ebp, 3
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x14]
jmp 0x5108b1
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x34]
cmp ebx, edx
mov dword [esp + 0x14], edx
je 0x510970
jmp 0x510a40
add edi, 4
mov edx, dword [esp + 0xa0]
cmp edx, eax
jae 0x510743
mov esi, dword [esp + 0x80]
add esi, edx
nop word [eax + eax]
mov ebp, dword [edx]
xor ebp, dword [edi]
jne 0x51076d
add edx, 4
add edi, 4
add esi, 4
cmp edx, eax
jb 0x510730
mov eax, dword [esp + 4]
add eax, 0xffffffff
cmp edx, eax
jae 0x510905
movzx eax, word [edi]
cmp ax, word [edx]
mov esi, dword [esp + 0x28]
jne 0x510909
add edx, 2
add edi, 2
jmp 0x510909
bsf edx, ebp
shr edx, 3
add edx, esi
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 8]
lea eax, [edx + 4]
mov dword [esp + 0x34], eax
cmp ebx, dword [esp + 0x3c]
jae 0x510935
add edx, esi
add edx, 4
mov ecx, dword [esp + 4]
cmp edx, ecx
jne 0x510935
mov eax, dword [esp + 0x48]
mov edx, eax
mov ebx, ecx
cmp dword [esp + 0xc], ecx
jbe 0x51083d
mov edx, dword [ecx]
xor edx, dword [eax]
je 0x510833
bsf ebx, edx
shr ebx, 3
mov edx, dword [esp + 0x14]
jmp 0x5108dd
add edx, 4
mov ebp, dword [esp + 0xa0]
cmp ebp, dword [esp + 0xc]
mov eax, dword [esp + 0x50]
jae 0x51080a
mov esi, dword [esp + 0x80]
lea edi, [esi + ebp]
nop dword [eax + eax]
mov esi, dword [ebp]
xor esi, dword [edx]
jne 0x51089d
add ebp, 4
add edx, 4
add edi, 4
cmp ebp, dword [esp + 0xc]
jb 0x5107f0
cmp ebp, dword [esp + 0x108]
jae 0x510fba
movzx esi, word [edx]
cmp si, word [ebp]
mov edi, dword [esp + 8]
jne 0x51082a
add ebp, 2
add edx, 2
mov esi, dword [esp + 0x28]
jmp 0x510fc2
lea ebx, [ecx + 4]
mov edx, dword [esp + 0xf8]
cmp ebx, dword [esp + 0xc]
jae 0x510875
mov esi, dword [esp + 0xe8]
sub esi, edi
mov eax, dword [esp + 0xb4]
cmp esi, eax
cmovae esi, eax
mov edi, ebx
sub edi, esi
nop dword [eax]
mov esi, dword [ebx]
xor esi, dword [edx]
jne 0x5108c9
add ebx, 4
add edx, 4
add edi, 4
cmp ebx, dword [esp + 0xc]
jb 0x510860
cmp ebx, dword [esp + 0x108]
jae 0x510fe1
movzx esi, word [edx]
cmp si, word [ebx]
mov edi, dword [esp + 8]
jne 0x510894
add ebx, 2
add edx, 2
mov esi, dword [esp + 0x28]
jmp 0x510fe9
bsf ebp, esi
shr ebp, 3
add ebp, edi
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 8]
add ebp, 4
mov dword [esp + 0x34], ebp
cmp ebp, edx
mov ebp, dword [esp + 0x1c]
jg 0x510950
jmp 0x510960
bsf ebx, esi
shr ebx, 3
add ebx, edi
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x34]
add eax, ebx
mov dword [esp + 0x34], eax
cmp eax, edx
jg 0x510945
nop dword [eax + eax]
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x34]
cmp ebx, edx
mov dword [esp + 0x14], edx
je 0x510970
jmp 0x510a40
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
cmp edx, dword [esp + 4]
jae 0x51091e
mov cl, byte [edi]
xor eax, eax
cmp cl, byte [edx]
sete al
add edx, eax
mov edi, dword [esp + 8]
sub edx, ebp
lea eax, [edx + 4]
mov dword [esp + 0x34], eax
cmp ebx, dword [esp + 0x3c]
jb 0x510792
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x34], eax
cmp eax, edx
jle 0x5108f0
mov eax, dword [esp + 0x60]
lea ebx, [eax + edi]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x8c], ebx
mov edx, dword [esp + 0x34]
nop dword [eax + eax]
mov ebx, dword [esp + 0x34]
cmp ebx, edx
mov dword [esp + 0x14], edx
jne 0x510a40
add edx, edi
cmp edx, eax
ja 0x510a40
cmp ebx, 4
jl 0x510a40
lea eax, [ebx - 3]
mov dword [esp + 4], eax
xor ebx, ebx
mov esi, 0x10
mov dword [esp + 8], edi
mov edi, 1
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x18]
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [esp + 8]
lea ebp, [ebx + eax]
movzx ebp, bp
movzx eax, word [ecx + ebp*2 + 0x20000]
lea ebp, [esi + 1]
sar esi, 4
cmp edi, eax
cmovb edi, eax
mov eax, 0x10
cmovb ebp, eax
cmovb edx, ebx
add ebx, esi
mov esi, ebp
cmp ebx, dword [esp + 4]
jl 0x5109b0
mov dword [esp + 0x18], edx
xor ebx, ebx
mov edx, dword [esp + 8]
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 + 8], edx
cmp edi, 1
jbe 0x510a2c
mov al, byte [esp + 4]
mov bl, al
or ebx, 2
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
jmp 0x510c29
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 8]
nop dword [eax + eax]
movzx eax, di
mov edx, dword [esp + 0x4c]
cmp word [edx + eax*2 + 0x20000], 1
jne 0x510b70
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x510c10
cmp dword [esp + 0x20], 0
je 0x510b79
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x30], edi
cmp dword [esp + 0x20], 2
jne 0x510c0c
mov edi, ebp
lea edx, [ebp - 1]
mov dword [esp + 0x94], edx
cmp edx, dword [esp + 0x44]
jb 0x510bde
mov edx, dword [esp + 0x24]
mov eax, edx
sub eax, edi
mov dword [esp + 0x20], 2
cmp eax, 3
mov ebp, ebx
jb 0x510b70
mov ebx, dword [esp + 0x94]
cmp ebx, edx
mov ecx, dword [esp + 0x60]
cmovb ecx, dword [esp + 0xd4]
mov eax, dword [esp]
cmp dword [ecx + ebx], eax
jne 0x510b70
mov eax, ecx
mov dword [esp + 8], edi
cmp ebx, edx
mov ecx, dword [esp + 0x3c]
cmovb ecx, dword [esp + 0xcc]
mov edx, eax
mov dword [esp + 0x20], eax
add eax, ebx
mov dword [esp + 4], eax
lea edx, [eax + 4]
lea esi, [ecx - 3]
mov ebp, edx
cmp esi, edx
jbe 0x510b36
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x20]
add edi, eax
add edi, 3
mov ebp, edx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [ebp]
xor eax, dword [esp]
jne 0x510c3e
add ebp, 4
add edi, 4
cmp ebp, esi
jb 0x510b20
cmp ebp, ecx
mov edi, dword [esp + 0x88]
jae 0x510c4d
mov esi, ecx
sub esi, ebp
mov ebx, dword [esp]
cmp byte [ebp], bl
jne 0x510b5e
add ebp, 1
shr ebx, 8
add esi, 0xffffffff
jne 0x510b4c
mov ebp, ecx
mov ebx, dword [esp + 0x94]
jmp 0x510c4d
mov eax, dword [esp + 0x18]
jmp 0x510c10
mov dword [esp + 0x20], 1
cmp byte [esp + 0x5c], 0
je 0x510c10
mov eax, ebp
mov ebp, edi
cmp dword [esp + 0xc], eax
jbe 0x511016
mov edi, eax
mov ebx, eax
nop
mov edx, dword [eax]
xor edx, dword [esp]
jne 0x510be2
add eax, 4
add edi, 4
cmp eax, dword [esp + 0xc]
jb 0x510ba0
mov edx, dword [esp + 0x3c]
cmp eax, edx
jae 0x510bea
mov esi, edx
sub esi, edi
lea edi, [eax + esi]
mov edx, dword [esp]
cmp byte [eax], dl
jne 0x510bd6
add eax, 1
shr edx, 8
add esi, 0xffffffff
jne 0x510bc5
mov eax, edi
mov edi, eax
mov esi, dword [esp + 0x28]
jmp 0x510bea
mov ebp, ebx
jmp 0x510c10
bsf eax, edx
shr eax, 3
add edi, eax
mov eax, dword [esp + 0x18]
add edi, dword [esp + 0xbc]
mov dword [esp + 0x20], 2
mov dword [esp + 0x30], edi
cmp dword [esp + 0x20], 2
je 0x510a84
mov edi, ebp
mov ebp, ebx
add eax, edi
movzx eax, ax
mov edx, dword [esp + 0x4c]
movzx eax, word [edx + eax*2 + 0x20000]
sub edi, eax
mov dword [esp + 8], edi
xor ebx, ebx
mov eax, dword [esp + 0x10]
add eax, 0xffffffff
cmp ebx, 3
jne 0x5105e0
jmp 0x511060
bsf ebp, eax
shr ebp, 3
add ebp, edi
mov edi, dword [esp + 0x88]
sub ebp, edx
add ebp, 4
cmp ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x48]
jae 0x510c75
mov eax, dword [esp + 4]
add eax, ebp
cmp eax, ecx
je 0x510c7f
mov dword [esp + 0x70], ebp
mov dword [esp + 0x78], edi
mov esi, edi
jmp 0x510cf7
mov dword [esp + 0x70], ebp
mov dword [esp + 0x78], esi
jmp 0x510cf7
mov ebx, ebp
lea ecx, [ebp*8]
mov edx, dword [esp]
rol edx, cl
mov edi, esi
mov ecx, esi
cmp dword [esp + 0xc], esi
jbe 0x511048
nop dword [eax + eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x510cda
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 0xc]
jb 0x510ca0
mov eax, dword [esp + 0x3c]
cmp ecx, eax
jae 0x510ce2
mov esi, eax
sub esi, edi
lea edi, [ecx + esi]
cmp byte [ecx], dl
jne 0x510cd2
add ecx, 1
shr edx, 8
add esi, 0xffffffff
jne 0x510cc1
mov ecx, edi
mov edi, ecx
mov esi, dword [esp + 0x48]
jmp 0x510ce2
bsf eax, eax
shr eax, 3
add edi, eax
sub ebx, esi
add ebx, edi
mov dword [esp + 0x70], ebx
mov eax, dword [esp + 0x88]
mov dword [esp + 0x78], eax
mov esi, eax
mov eax, dword [esp]
mov dword [esp + 0x98], eax
mov dword [esp + 0x18], esi
lea eax, [esi + 4]
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x20]
lea eax, [edx + ecx]
xor ebp, ebp
mov ecx, dword [esp + 4]
mov edi, ecx
nop
mov edx, ebp
mov esi, edi
lea ebx, [ecx + ebp]
cmp ebx, dword [esp + 0x34]
jb 0x510d40
lea ebp, [edx - 4]
lea edi, [esi - 4]
mov ecx, dword [esp]
cmp dword [eax + edx - 5], ecx
mov ecx, dword [esp + 4]
je 0x510d20
lea edi, [edx + eax]
add edi, 0xffffffff
cmp ebx, dword [esp + 0x18]
jbe 0x51102b
mov ebp, eax
mov eax, dword [esp + 0xd0]
cmp byte [edx + ebp - 2], al
mov ebp, dword [esp + 0x1c]
jne 0x510da0
mov eax, dword [esp + 0x78]
sub eax, dword [esp + 8]
sub eax, dword [esp + 0x20]
sub eax, edx
lea ecx, [eax + ebx]
add ecx, 1
lea edx, [esp + 0x9a]
nop
lea edi, [esi - 1]
cmp edi, dword [esp + 0x18]
jbe 0x510fb3
movzx eax, byte [esi - 2]
lea ebx, [edx - 1]
mov esi, edi
cmp al, byte [edx]
mov edx, ebx
je 0x510d80
mov ecx, dword [esp + 4]
mov edx, ecx
sub edx, edi
mov ebx, dword [esp + 0x94]
cmp ebx, dword [esp + 0x24]
jae 0x510dba
mov esi, dword [esp + 0x28]
jmp 0x510eb7
sub ecx, edx
cmp ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x28]
jne 0x510eb7
mov eax, dword [esp + 0xb0]
cmp eax, dword [esp + 0x24]
jae 0x510eb7
mov dword [esp + 0x34], edx
mov ecx, edx
neg ecx
shl ecx, 3
mov eax, dword [esp]
rol eax, cl
mov dword [esp + 0x98], eax
mov dword [esp + 4], eax
shr eax, 0x18
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 0xf0]
mov esi, dword [esp + 0xcc]
mov ebx, dword [esp + 0xc4]
nop word cs:[eax + eax]
nop dword [eax]
mov edx, ebx
mov ecx, esi
mov edi, ebp
lea eax, [ebx + 1]
cmp eax, dword [esp + 0xa8]
jb 0x510e4c
lea ebx, [edx - 4]
lea esi, [ecx - 4]
lea ebp, [edi + 4]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 4]
cmp dword [edx - 3], ecx
mov ecx, dword [esp + 8]
je 0x510e20
cmp eax, dword [esp + 0x88]
jbe 0x511034
mov ebx, dword [esp + 0x18]
cmp byte [edx], bl
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x94]
jne 0x510eaa
add eax, edi
lea esi, [esp + 0x9a]
mov edi, dword [esp + 0x88]
cmp edx, edi
jbe 0x510e9d
mov ebx, eax
movzx eax, byte [edx - 1]
add edx, 0xffffffff
lea ecx, [esi - 1]
cmp al, byte [esi]
mov eax, ebx
mov esi, ecx
je 0x510e80
add edx, 1
mov eax, edx
mov ebx, dword [esp + 0x94]
mov ecx, eax
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
add edx, dword [esp + 0xcc]
sub edx, ecx
mov edi, ebx
sub ebx, edx
mov eax, dword [esp + 0x44]
cmp ebx, eax
cmovbe ebx, eax
mov edx, ebx
sub edi, ebx
mov ebx, dword [esp + 0x70]
add edi, ebx
mov eax, dword [esp + 0x30]
cmp ebx, eax
ja 0x510f17
cmp edi, eax
jb 0x510f17
mov edx, dword [esp + 0x94]
sub edx, eax
mov edi, dword [esp + 0x70]
add edi, edx
mov eax, edi
not eax
mov edx, dword [esp + 0x24]
add eax, edx
cmp eax, 3
cmovb edi, edx
mov dword [esp + 0x18], 0
mov ebx, 2
mov dword [esp + 0x20], 2
mov dword [esp + 8], edi
jmp 0x510c29
mov eax, edx
not eax
mov ebp, dword [esp + 0x24]
add eax, ebp
mov dword [esp + 0x18], 0
mov ebx, 2
cmp eax, 3
jae 0x510f4c
mov dword [esp + 0x20], 2
mov dword [esp + 8], ebp
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x1c]
jmp 0x510c2d
mov eax, dword [esp + 0x30]
cmp edi, eax
cmovae edi, eax
cmp dword [esp + 0x14], edi
jae 0x510f83
mov eax, dword [esp + 0x50]
sub eax, edx
cmp eax, 0xffff
mov ebp, dword [esp + 0x1c]
ja 0x511060
mov eax, dword [esp + 0x60]
add eax, edx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x14], edi
jmp 0x510f87
mov ebp, dword [esp + 0x1c]
movzx eax, dx
mov edi, dword [esp + 0x4c]
movzx eax, word [edi + eax*2 + 0x20000]
mov dword [esp + 0x20], 2
sub edx, eax
mov dword [esp + 8], edx
mov eax, dword [esp + 0x10]
jae 0x510c2d
jmp 0x511060
mov edi, ecx
jmp 0x510d9c
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 8]
cmp ebp, dword [esp + 0x3c]
jae 0x510fd4
mov cl, byte [edx]
xor edx, edx
cmp cl, byte [ebp]
sete dl
add ebp, edx
mov edx, dword [esp + 0x14]
sub ebp, dword [esp + 0x1c]
jmp 0x5108b1
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 8]
cmp ebx, dword [esp + 0x3c]
jae 0x510ffa
mov al, byte [edx]
xor edx, edx
cmp al, byte [ebx]
sete dl
add ebx, edx
mov edx, dword [esp + 0x14]
sub ebx, dword [esp + 4]
jmp 0x5108dd
mov edx, ebp
cmp edx, eax
jb 0x51071e
jmp 0x510743
mov edi, eax
mov ebx, eax
mov edx, dword [esp + 0x3c]
cmp eax, edx
jb 0x510bbb
jmp 0x510bea
mov ebp, dword [esp + 0x1c]
jmp 0x510da0
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x94]
jmp 0x510eaa
mov edi, esi
mov ecx, esi
mov eax, dword [esp + 0x3c]
cmp ecx, eax
jb 0x510cba
jmp 0x510ce2
mov edi, dword [esp + 0x14]
cmp edi, 4
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x84]
jl 0x510344
lea eax, [edi - 0x13]
cmp eax, 0x12
mov edx, edi
mov eax, 0x12
cmovb edx, eax
cmp byte [esp + 0xac], 0
cmove edx, edi
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x8c]
mov dword [esp + 8], eax
mov dword [esp + 0x14], edx
cmp dword [esp + 0x9c], edx
jae 0x511154
mov edi, dword [esp + 0x38]
mov eax, edi
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0x13c], 0
mov esi, dword [esp + 0x7c]
je 0x5110e1
shr edx, 7
add edx, ebp
lea eax, [edi + edx]
add eax, 9
cmp eax, esi
ja 0x5137a8
lea ebx, [ebp + 1]
cmp edi, 0xf
mov edx, edi
jb 0x511243
lea eax, [edx - 0xf]
mov byte [ebp], 0xf0
cmp eax, 0xff
mov ecx, dword [esp + 0x28]
jb 0x51114a
mov esi, dword [esp + 0x28]
sub esi, dword [esp + 0x2c]
lea eax, [esi - 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 + 0x44]
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 ecx, dword [esp + 0x28]
mov byte [ebx], al
add ebx, 1
jmp 0x51124f
mov edx, dword [esp + 0x38]
cmp edx, 0xe
jle 0x511180
lea eax, [edx - 0xf]
mov ebp, 0x80808081
mul ebp
shr edx, 7
mov eax, dword [esp + 0x38]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x38]
add eax, edx
add eax, 1
mov edx, dword [esp + 0x38]
jmp 0x51118a
lea ecx, [edx + 1]
mov eax, edx
mov ebp, 0x80808081
mov dword [esi + 8], 1
mov dword [esi + 4], 0
mov dword [esi + 0xc], edx
mov dword [esi], eax
mov eax, ecx
cmp ecx, 0xf
jl 0x5111b6
lea eax, [ecx - 0xf]
mul ebp
shr edx, 7
lea eax, [ecx + edx]
add eax, 1
mov edx, dword [esp + 0x38]
mov dword [esi + 0x18], 1
mov dword [esi + 0x14], 0
mov dword [esi + 0x1c], ecx
mov dword [esi + 0x10], eax
mov ebx, esi
lea edi, [edx + 2]
cmp edx, 0xd
jl 0x511206
lea eax, [edx - 0xd]
mul ebp
shr edx, 7
mov eax, dword [esp + 0x38]
lea esi, [eax + 3]
mov eax, dword [esp + 0x38]
add eax, edx
add eax, 3
mov edx, dword [esp + 0x38]
mov dword [ebx + 0x28], 1
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x2c], edi
mov dword [ebx + 0x20], eax
jmp 0x511228
mov dword [ebx + 0x28], 1
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x2c], edi
mov dword [ebx + 0x20], edi
mov esi, 0xf
cmp edx, 0xc
jne 0x511323
lea eax, [edx - 0xc]
mul ebp
shr edx, 7
mov eax, dword [esp + 0x38]
lea edi, [eax + edx]
add edi, 4
mov edx, dword [esp + 0x38]
jmp 0x511328
mov eax, edx
shl al, 4
mov byte [ebp], al
mov ecx, dword [esp + 0x28]
lea ebp, [ebx + ecx]
mov ecx, dword [esp + 0x2c]
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 + 0x2c], ecx
mov edx, ecx
mov ecx, eax
mov dword [esp + 4], edi
cmp edi, 0x18
mov edi, eax
jb 0x5135bd
cmp ebp, ebx
cmova ebx, ebp
add ebx, dword [esp]
and ebx, 0xfffffff8
mov eax, dword [esp + 0x2c]
add eax, ebx
add eax, 8
cmp edi, eax
jae 0x5112b5
lea eax, [edi + ebx]
add eax, 8
mov ebx, dword [esp + 0x2c]
mov edx, ebx
mov ecx, edi
cmp ebx, eax
jb 0x5135bd
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 0x51358e
mov ebp, edx
and ebp, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x2c]
nop word cs:[eax + eax]
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 0x5112f0
jmp 0x513594
lea esi, [edx + 3]
mov edi, esi
lea eax, [edx - 0xf]
mov ebx, edx
mul ebp
shr edx, 7
add ecx, edx
cmp ebx, 0xf
mov eax, dword [esp + 0x68]
mov dword [eax + 0x38], 1
mov dword [eax + 0x34], 0
mov dword [eax + 0x3c], esi
mov dword [eax + 0x30], edi
cmovl ecx, ebx
lea esi, [ecx + 3]
add ecx, 4
mov edi, dword [esp + 0x14]
neg edi
mov ebx, 4
mov ebp, dword [esp + 0x110]
jmp 0x511395
mov dword [ebp - 4], ebx
mov eax, dword [esp + 8]
mov dword [ebp - 8], eax
mov eax, dword [esp + 0x38]
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 0x5113ad
mov edx, esi
cmp ebx, 0x13
jb 0x511370
lea eax, [ebx - 0x13]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ecx
jmp 0x511370
mov edi, dword [esp + 0x14]
mov eax, edi
shl eax, 4
mov esi, dword [esp + 0x68]
mov dword [esi + eax + 0x18], 1
mov dword [esi + eax + 0x14], 0
mov dword [esi + eax + 0x1c], 1
mov ecx, dword [esi + eax]
lea edx, [ecx + 1]
mov dword [esi + eax + 0x10], edx
mov dword [esi + eax + 0x28], 1
mov dword [esi + eax + 0x24], 0
mov dword [esi + eax + 0x2c], 2
lea edx, [ecx + 2]
mov dword [esi + eax + 0x20], edx
mov dword [esi + eax + 0x38], 1
mov dword [esi + eax + 0x34], 0
mov dword [esi + eax + 0x3c], 3
add ecx, 3
mov dword [esi + eax + 0x30], ecx
cmp edi, 1
jle 0x5131ec
mov eax, dword [esp + 0x28]
mov edx, eax
sub edx, dword [esp + 0x60]
add edx, 1
mov ecx, 0xfffffffb
sub ecx, eax
mov dword [esp + 0xe8], ecx
mov ecx, dword [esp + 0x24]
add ecx, eax
add ecx, 1
mov dword [esp + 0x78], ecx
add eax, 5
mov dword [esp + 0xd0], eax
mov ecx, 1
mov dword [esp + 0x94], 0
mov eax, dword [esp + 0x114]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x50]
nop word [eax + eax]
mov ebx, ecx
mov ecx, dword [esp + 0x28]
add ecx, ebx
mov dword [esp + 0x44], ecx
cmp ecx, dword [esp + 0x100]
ja 0x5131ec
lea ecx, [ebx + 1]
mov edi, ecx
shl edi, 4
mov dword [esp + 0x8c], ebx
shl ebx, 4
mov dword [esp + 0xb8], edi
mov dword [esp + 0x38], edx
mov edx, dword [esi + edi]
mov edi, dword [esi + ebx]
cmp dword [esp + 0xe4], 0xc
mov dword [esp + 0x64], edx
jae 0x512100
cmp edx, edi
jle 0x512e28
mov dword [esp + 0xfc], ebx
mov dword [esp + 0xa0], edi
mov dword [esp + 0xbc], ecx
mov ecx, dword [esp + 0x44]
mov edi, ecx
mov esi, dword [esp + 0x60]
sub edi, esi
lea edx, [edi - 0xffff]
cmp dword [esp + 0xec], edi
cmova edx, dword [esp + 0xb0]
mov dword [esp + 0x30], edx
mov ecx, dword [ecx]
mov dword [esp + 4], ecx
mov dword [esp + 0x34], edi
cmp eax, edi
mov edi, 0xffff
mov edx, dword [esp + 0x38]
jae 0x5115ff
mov ebx, edx
sub ebx, eax
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x94]
add ecx, edx
lea edx, [eax + esi]
test bl, 1
je 0x51157d
imul esi, dword [esi + eax], 0x9e3779b1
shr esi, 0x11
mov ebx, 0xffff
mov edi, eax
mov ebp, dword [esp + 0x4c]
sub edi, dword [ebp + esi*4]
cmp edi, 0xffff
cmovae edi, ebx
movzx ebx, ax
mov word [ebp + ebx*2 + 0x20000], di
mov edi, 0xffff
mov dword [ebp + esi*4], eax
add eax, 1
cmp ecx, edx
mov ebx, dword [esp + 0x60]
je 0x5115ff
add eax, 1
nop dword [eax + eax]
lea ecx, [eax - 1]
imul edx, dword [ebx + eax - 1], 0x9e3779b1
shr edx, 0x11
mov ebp, dword [esp + 0x4c]
mov esi, dword [ebp + edx*4]
not esi
add esi, eax
cmp esi, 0xffff
cmovae esi, edi
movzx edi, cx
mov word [ebp + edi*2 + 0x20000], si
mov edi, 0xffff
mov dword [ebp + edx*4], ecx
imul ecx, dword [ebx + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebp + ecx*4]
cmp edx, 0xffff
cmovae edx, edi
movzx esi, ax
mov word [ebp + esi*2 + 0x20000], dx
mov edx, dword [esp + 0x38]
mov dword [ebp + ecx*4], eax
lea ecx, [eax + 2]
add eax, 1
cmp eax, edx
mov eax, ecx
jne 0x511590
mov edi, dword [esp + 0x14]
sub edi, dword [esp + 0x8c]
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
mov dword [ecx + 0x40014], eax
mov esi, dword [esp + 0x44]
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov ebx, dword [ecx + eax*4]
lea eax, [esi + 4]
mov dword [esp + 0x70], eax
lea eax, [esi + 8]
mov dword [esp + 0x6c], 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 + 0x104], edx
xor eax, edx
or eax, ecx
sete byte [esp + 0x58]
neg esi
mov dword [esp + 0x40], esi
mov dword [esp + 0xe0], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov ebp, dword [esp + 0x10c]
mov dword [esp + 0xc0], edi
mov dword [esp], edi
mov esi, dword [esp + 0x24]
jmp 0x5116ca
mov edx, dword [esp + 0x20]
mov dword [esp + 0x10], edi
lea eax, [edx + ebx]
movzx eax, ax
mov edx, dword [esp + 0x4c]
movzx eax, word [edx + eax*2 + 0x20000]
sub ebx, eax
xor edx, edx
add ebp, 0xffffffff
cmp edx, 3
je 0x512e31
cmp ebx, dword [esp + 0x30]
jb 0x512e31
test ebp, ebp
jle 0x512e31
mov dword [esp + 0x18], ebp
xor ecx, ecx
cmp byte [esp + 0xac], 0
je 0x511710
mov eax, dword [esp + 0x34]
sub eax, ebx
cmp eax, 8
jae 0x511710
mov edx, dword [esp]
mov edi, dword [esp + 0x10]
jmp 0x511a00
mov ebp, esi
sub ebp, ebx
mov edx, dword [esp]
jbe 0x511780
cmp ebx, dword [esp + 0x90]
ja 0x5117e0
mov eax, dword [esp + 0xd4]
lea edi, [eax + ebx]
mov eax, dword [esp + 4]
cmp dword [edi], eax
jne 0x5117e0
mov dword [esp + 0x5c], ebx
mov esi, dword [esp + 0x44]
add ebp, esi
mov eax, dword [esp + 0x3c]
cmp ebp, eax
mov ecx, ebp
cmova ecx, eax
add edi, 4
mov dword [esp + 8], ecx
lea ebx, [ecx - 3]
mov edx, dword [esp + 0x70]
cmp ebx, edx
jbe 0x5117f0
mov eax, dword [edx]
xor eax, dword [edi]
je 0x5117e9
bsf edx, eax
shr edx, 3
jmp 0x511849
mov eax, dword [esp + 0x60]
lea ebp, [eax + ebx]
mov eax, dword [esp + 0x44]
movzx eax, word [eax + edx - 1]
cmp ax, word [edx + ebp - 1]
mov edi, dword [esp + 0x10]
jne 0x511a00
mov eax, dword [esp + 4]
cmp dword [ebp], eax
jne 0x511a00
lea edx, [ebp + 4]
mov eax, dword [esp + 0x70]
cmp dword [esp + 0xc], eax
jbe 0x512081
mov eax, dword [eax]
xor eax, dword [edx]
je 0x5118a0
bsf ecx, eax
shr ecx, 3
mov edx, dword [esp]
add ecx, 4
cmp ecx, edx
jg 0x5119ad
jmp 0x511a00
mov edi, dword [esp + 0x10]
jmp 0x511a00
add edi, 4
mov edx, dword [esp + 0x6c]
cmp edx, ebx
jae 0x511813
mov eax, dword [esp + 0xe8]
lea esi, [eax + edx]
nop
mov eax, dword [edx]
xor eax, dword [edi]
jne 0x51183d
add edx, 4
add edi, 4
add esi, 4
cmp edx, ebx
jb 0x511800
mov eax, dword [esp + 8]
add eax, 0xffffffff
cmp edx, eax
jae 0x5119b8
movzx eax, word [edi]
cmp ax, word [edx]
mov esi, dword [esp + 0x44]
jne 0x5119bc
add edx, 2
add edi, 2
jmp 0x5119bc
bsf edx, eax
shr edx, 3
add edx, esi
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x5c]
lea ecx, [edx + 4]
cmp ebp, dword [esp + 0x3c]
jae 0x5119e8
lea eax, [esi + edx]
add eax, 4
mov ebp, dword [esp + 8]
cmp eax, ebp
mov esi, dword [esp + 0x60]
jne 0x51199f
mov ebx, dword [esp + 0x48]
mov edi, ebx
mov edx, ebp
cmp dword [esp + 0xc], ebp
jbe 0x51190b
mov eax, dword [ebp]
xor eax, dword [ebx]
je 0x511901
bsf edx, eax
shr edx, 3
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x5c]
jmp 0x51199d
add edx, 4
mov ecx, dword [esp + 0x6c]
cmp ecx, dword [esp + 0xc]
jae 0x5118d9
mov eax, dword [esp + 0xe8]
lea edi, [eax + ecx]
nop word [eax + eax]
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x511975
add ecx, 4
add edx, 4
add edi, 4
cmp ecx, dword [esp + 0xc]
jb 0x5118c0
cmp ecx, dword [esp + 0x108]
jae 0x51202f
movzx eax, word [edx]
cmp ax, word [ecx]
mov edi, dword [esp + 0x10]
jne 0x512033
add ecx, 2
add edx, 2
jmp 0x512033
lea edx, [ebp + 4]
mov edi, dword [esp + 0xf8]
cmp edx, dword [esp + 0xc]
jae 0x512092
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x5c]
sub eax, ebx
mov esi, dword [esp + 0xb4]
cmp esi, eax
cmovb eax, esi
mov ebp, edx
sub ebp, eax
nop
mov eax, dword [edx]
xor eax, dword [edi]
jne 0x51198d
add edx, 4
add edi, 4
add ebp, 4
cmp edx, dword [esp + 0xc]
jb 0x511930
cmp edx, dword [esp + 0x108]
jae 0x5120a3
movzx eax, word [edi]
cmp ax, word [edx]
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x60]
mov ebp, dword [esp + 8]
jne 0x5120af
add edx, 2
add edi, 2
jmp 0x5120af
bsf ecx, eax
shr ecx, 3
add ecx, edi
mov edx, dword [esp]
mov edi, dword [esp + 0x10]
add ecx, 4
cmp ecx, edx
jg 0x5119ad
jmp 0x511a00
bsf edx, eax
shr edx, 3
add edx, ebp
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x10]
add ecx, edx
mov edx, dword [esp]
cmp ecx, edx
jle 0x5119f3
lea ebp, [esi + ebx]
mov esi, dword [esp + 0x24]
mov dword [esp + 0xe0], ebp
mov edx, ecx
jmp 0x511a00
mov esi, dword [esp + 0x44]
cmp edx, dword [esp + 8]
jae 0x5119cd
mov al, byte [edi]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov eax, dword [esp + 0x70]
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x5c]
sub edx, eax
lea ecx, [edx + 4]
cmp ebp, dword [esp + 0x3c]
jb 0x51185e
mov esi, dword [esp + 0x60]
mov edx, dword [esp]
cmp ecx, edx
jg 0x5119a6
mov esi, dword [esp + 0x24]
nop word [eax + eax]
cmp ecx, edx
mov dword [esp], edx
jne 0x511ac0
lea eax, [edx + ebx]
cmp eax, dword [esp + 0x34]
ja 0x511ac0
cmp ecx, 4
jl 0x511ac0
mov dword [esp + 0x5c], ecx
lea eax, [ecx - 3]
mov dword [esp + 8], eax
xor ebp, ebp
mov esi, 0x10
mov edi, 1
mov ecx, dword [esp + 0x20]
nop dword [eax]
lea eax, [ebx + ebp]
movzx eax, ax
mov edx, ebx
mov ebx, dword [esp + 0x4c]
movzx ebx, word [ebx + eax*2 + 0x20000]
lea eax, [esi + 1]
sar esi, 4
cmp edi, ebx
cmovb edi, ebx
mov ebx, 0x10
cmovb eax, ebx
mov ebx, edx
cmovb ecx, ebp
add ebp, esi
mov esi, eax
cmp ebp, dword [esp + 8]
jl 0x511a40
mov dword [esp + 0x20], ecx
xor edx, edx
cmp ebx, edi
setb al
mov esi, edi
mov ecx, 0
cmovb esi, ecx
cmp edi, 2
cmovb esi, ecx
sub ebx, esi
cmp edi, 1
jbe 0x511c56
mov dl, al
or edx, 2
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
jmp 0x5116be
mov ebp, dword [esp + 0x18]
movzx eax, bx
mov edx, dword [esp + 0x4c]
cmp word [edx + eax*2 + 0x20000], 1
jne 0x5116a0
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x5116a4
cmp dword [esp + 0x1c], 0
je 0x511bd7
cmp dword [esp + 0x1c], 2
jne 0x5116a4
lea eax, [ebx - 1]
mov dword [esp + 0x80], eax
cmp eax, dword [esp + 0x30]
jb 0x5116a4
mov eax, esi
sub eax, ebx
mov dword [esp + 0x1c], 2
cmp eax, 3
jb 0x5116a4
mov ecx, dword [esp + 0x80]
cmp ecx, esi
mov esi, dword [esp + 0x60]
cmovb esi, dword [esp + 0xd4]
mov eax, dword [esp + 4]
cmp dword [esi + ecx], eax
jne 0x511ca5
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x10], edi
cmp ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x3c]
mov ebp, ebx
cmovb ebp, dword [esp + 0xcc]
mov edx, esi
mov dword [esp + 0x1c], esi
lea eax, [esi + ecx]
mov dword [esp + 8], eax
lea edx, [eax + 4]
lea esi, [ebp - 3]
mov ecx, edx
cmp esi, edx
jbe 0x511ba6
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x1c]
lea edi, [eax + ecx]
add edi, 3
mov ecx, edx
nop word [eax + eax]
mov eax, dword [ecx]
xor eax, dword [esp + 4]
jne 0x511cae
add ecx, 4
add edi, 4
cmp ecx, esi
jb 0x511b90
cmp ecx, ebp
mov edi, dword [esp + 0x88]
jae 0x511cbd
mov esi, ebp
sub esi, ecx
mov eax, dword [esp + 4]
cmp byte [ecx], al
jne 0x511cbd
add ecx, 1
shr eax, 8
add esi, 0xffffffff
jne 0x511bbd
mov ecx, ebp
jmp 0x511cbd
mov dword [esp + 0x1c], 1
cmp byte [esp + 0x58], 0
je 0x5116a4
mov edi, dword [esp + 0xd0]
mov eax, dword [esp + 0x70]
mov edx, eax
cmp dword [esp + 0xc], eax
jbe 0x512066
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [edx]
xor eax, dword [esp + 4]
jne 0x511c7d
add edx, 4
add edi, 4
cmp edx, dword [esp + 0xc]
jb 0x511c10
mov esi, dword [esp + 0x3c]
cmp edx, esi
jae 0x512078
mov eax, ebx
sub esi, edi
lea edi, [edx + esi]
mov ebx, dword [esp + 4]
cmp byte [edx], bl
jne 0x511c4c
add edx, 1
shr ebx, 8
add esi, 0xffffffff
jne 0x511c3b
mov edx, edi
mov edi, edx
mov esi, dword [esp + 0x24]
mov ebx, eax
jmp 0x511c85
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
movzx eax, bx
mov edx, dword [esp + 0x4c]
cmp word [edx + eax*2 + 0x20000], 1
je 0x511ada
jmp 0x5116a0
bsf eax, eax
shr eax, 3
add edi, eax
add edi, dword [esp + 0x40]
mov dword [esp + 0x1c], 2
mov edx, dword [esp + 0x20]
cmp dword [esp + 0x1c], 2
je 0x511afc
jmp 0x5116a4
mov esi, dword [esp + 0x24]
jmp 0x5116a4
bsf ecx, eax
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0x88]
sub ecx, edx
add ecx, 4
mov eax, dword [esp + 0x80]
cmp eax, dword [esp + 0x24]
mov esi, dword [esp + 0x48]
jae 0x511cef
mov eax, dword [esp + 8]
add eax, ecx
cmp eax, ebp
je 0x511cfc
mov dword [esp + 0xc8], ecx
mov dword [esp + 0x54], edi
mov esi, edi
jmp 0x511d76
mov dword [esp + 0xc8], ecx
mov dword [esp + 0x54], esi
jmp 0x511d76
mov ebp, ecx
lea ecx, [ecx*8]
mov edx, dword [esp + 4]
rol edx, cl
mov edi, esi
mov ecx, esi
cmp dword [esp + 0xc], esi
jbe 0x5120e1
nop dword [eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x511d56
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 0xc]
jb 0x511d20
cmp ecx, ebx
jae 0x511d5e
mov esi, ebx
sub esi, edi
lea edi, [ecx + esi]
cmp byte [ecx], dl
jne 0x511d4e
add ecx, 1
shr edx, 8
add esi, 0xffffffff
jne 0x511d3d
mov ecx, edi
mov esi, dword [esp + 0x48]
mov edi, ecx
jmp 0x511d5e
bsf eax, eax
shr eax, 3
add edi, eax
sub ebp, esi
add ebp, edi
mov dword [esp + 0xc8], ebp
mov eax, dword [esp + 0x88]
mov dword [esp + 0x54], eax
mov esi, eax
mov ecx, dword [esp + 8]
mov eax, dword [esp + 4]
mov dword [esp + 0x98], eax
mov dword [esp + 0xdc], esi
lea eax, [esi + 4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x1c]
lea ebx, [edx + eax]
xor eax, eax
mov edi, ecx
nop word cs:[eax + eax]
nop dword [eax]
mov edx, eax
mov esi, edi
lea ebp, [ecx + eax]
cmp ebp, dword [esp + 0x20]
jb 0x511dd1
lea eax, [edx - 4]
lea edi, [esi - 4]
mov ecx, dword [esp + 4]
cmp dword [ebx + edx - 5], ecx
mov ecx, dword [esp + 8]
je 0x511db0
lea edi, [edx + ebx]
add edi, 0xffffffff
cmp ebp, dword [esp + 0xdc]
jbe 0x511e3e
mov eax, dword [esp + 0x104]
cmp byte [edx + ebx - 2], al
mov eax, dword [esp + 0x5c]
jne 0x511e3e
mov ecx, dword [esp + 0x54]
sub ecx, eax
sub ecx, dword [esp + 0x1c]
sub ecx, edx
lea eax, [ecx + ebp]
add eax, 1
lea ecx, [esp + 0x9a]
mov ebp, dword [esp + 0xdc]
nop word cs:[eax + eax]
nop dword [eax + eax]
lea edi, [esi - 1]
cmp edi, ebp
jbe 0x512028
movzx edx, byte [esi - 2]
lea ebx, [ecx - 1]
mov esi, edi
cmp dl, byte [ecx]
mov ecx, ebx
je 0x511e20
mov ecx, dword [esp + 8]
mov eax, ecx
sub eax, edi
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp edx, esi
jae 0x511e5a
mov ebp, dword [esp + 0x18]
jmp 0x511f57
sub ecx, eax
cmp ecx, dword [esp + 0x48]
mov ebp, dword [esp + 0x18]
jne 0x511f57
cmp dword [esp + 0xb0], esi
jae 0x511f57
mov dword [esp + 0x1c], eax
mov ecx, eax
neg ecx
shl ecx, 3
mov eax, dword [esp + 4]
rol eax, cl
mov dword [esp + 0x98], eax
mov dword [esp + 0x20], eax
shr eax, 0x18
mov dword [esp + 0x5c], eax
mov ebp, dword [esp + 0xf0]
mov esi, dword [esp + 0xcc]
mov edx, dword [esp + 0xc4]
nop
mov ecx, edx
mov eax, esi
mov edi, ebp
add edx, 1
mov dword [esp + 8], edx
cmp edx, dword [esp + 0xa8]
jb 0x511ed8
lea edx, [ecx - 4]
lea esi, [eax - 4]
lea ebp, [edi + 4]
mov ebx, dword [esp + 0x20]
cmp dword [ecx - 3], ebx
je 0x511eb0
mov edx, dword [esp + 8]
cmp edx, dword [esp + 0x88]
jbe 0x5120d4
mov edx, dword [esp + 0x5c]
cmp byte [ecx], dl
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x80]
jne 0x511f48
add dword [esp + 8], edi
lea edx, [esp + 0x9a]
mov edi, dword [esp + 0x88]
nop word cs:[eax + eax]
nop dword [eax]
cmp ecx, edi
jbe 0x51205d
movzx eax, byte [ecx - 1]
add ecx, 0xffffffff
lea esi, [edx - 1]
cmp al, byte [edx]
mov edx, esi
mov esi, dword [esp + 0x24]
je 0x511f20
add ecx, 1
mov eax, ecx
mov edx, dword [esp + 0x80]
mov ebx, dword [esp + 0x1c]
add ebx, dword [esp + 0xcc]
sub ebx, eax
mov eax, ebx
mov ebx, edx
sub ebx, eax
mov eax, dword [esp + 0x30]
cmp ebx, eax
cmovbe ebx, eax
mov edi, edx
sub edi, ebx
mov ecx, dword [esp + 0xc8]
add edi, ecx
mov eax, dword [esp + 0x10]
cmp ecx, eax
ja 0x511fae
cmp edi, eax
jb 0x511fae
sub edx, eax
mov ebx, dword [esp + 0xc8]
add ebx, edx
mov eax, ebx
not eax
add eax, esi
cmp eax, 3
cmovb ebx, esi
mov dword [esp + 0x20], 0
mov edx, 2
mov dword [esp + 0x1c], 2
jmp 0x5116be
mov eax, ebx
not eax
add eax, esi
mov dword [esp + 0x20], 0
mov edx, 2
cmp eax, 3
jae 0x511fd5
mov dword [esp + 0x1c], 2
mov ebx, esi
jmp 0x5116be
mov eax, dword [esp + 0x10]
cmp edi, eax
cmovae edi, eax
cmp dword [esp], edi
jae 0x512004
mov eax, dword [esp + 0x34]
sub eax, ebx
cmp eax, 0xffff
ja 0x512e31
mov eax, dword [esp + 0x60]
add eax, ebx
mov dword [esp + 0xe0], eax
mov dword [esp], edi
movzx eax, bx
mov edi, dword [esp + 0x4c]
movzx eax, word [edi + eax*2 + 0x20000]
mov dword [esp + 0x1c], 2
sub ebx, eax
jae 0x5116be
jmp 0x512e31
mov edi, eax
jmp 0x511e3a
mov edi, dword [esp + 0x10]
cmp ecx, dword [esp + 0x3c]
jae 0x512044
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov eax, dword [esp + 0x70]
mov edx, dword [esp]
sub ecx, eax
add ecx, 4
cmp ecx, edx
jg 0x5119ad
jmp 0x511a00
mov eax, dword [esp + 8]
jmp 0x511f41
mov edx, dword [esp + 0x70]
mov edi, edx
mov esi, dword [esp + 0x3c]
cmp edx, esi
jb 0x511c30
mov esi, dword [esp + 0x24]
jmp 0x511c85
mov ecx, eax
cmp ecx, dword [esp + 0xc]
jb 0x5118ad
jmp 0x5118d9
mov ebx, dword [esp + 0x5c]
cmp edx, dword [esp + 0x108]
jb 0x511952
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x60]
mov ebp, dword [esp + 8]
cmp edx, eax
jae 0x5120c9
mov al, byte [edi]
mov byte [esp + 8], al
mov al, byte [esp + 8]
cmp al, byte [edx]
mov eax, 0
sete al
add edx, eax
mov edi, dword [esp + 0x10]
sub edx, ebp
jmp 0x51199d
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
jmp 0x511f41
mov edi, esi
mov ecx, esi
cmp ecx, ebx
jb 0x511d36
jmp 0x511d5e
mov dword [esp + 0xbc], ecx
cmp edx, edi
jg 0x512120
lea ecx, [edi + 3]
cmp dword [ebx + esi + 0x40], ecx
jge 0x512120
mov dword [esp + 0x34], eax
jmp 0x5131a0
mov dword [esp + 0xfc], ebx
mov dword [esp + 0xa0], edi
mov ecx, dword [esp + 0x44]
mov esi, ecx
sub esi, dword [esp + 0x60]
lea edx, [esi - 0xffff]
cmp dword [esp + 0xec], esi
cmova edx, dword [esp + 0xb0]
mov dword [esp + 0x30], edx
mov ecx, dword [ecx]
mov dword [esp], ecx
mov dword [esp + 0x34], esi
cmp eax, esi
mov edi, 0xffff
mov ebx, dword [esp + 0x38]
jae 0x51223f
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x94]
add edx, ecx
sub ebx, eax
mov ecx, eax
test bl, 1
je 0x5121b7
mov ecx, dword [esp + 0x60]
imul ecx, dword [ecx + eax], 0x9e3779b1
shr ecx, 0x11
mov esi, eax
mov ebx, dword [esp + 0x4c]
sub esi, dword [ebx + ecx*4]
cmp esi, 0xffff
cmovae esi, edi
movzx edi, ax
mov word [ebx + edi*2 + 0x20000], si
mov edi, 0xffff
mov dword [ebx + ecx*4], eax
lea ecx, [eax + 1]
cmp edx, eax
mov ebx, dword [esp + 0x60]
je 0x51223f
add ecx, 1
nop word cs:[eax + eax]
lea eax, [ecx - 1]
imul edx, dword [ebx + ecx - 1], 0x9e3779b1
shr edx, 0x11
mov ebp, dword [esp + 0x4c]
mov esi, dword [ebp + edx*4]
not esi
add esi, ecx
cmp esi, 0xffff
cmovae esi, edi
movzx edi, ax
mov word [ebp + edi*2 + 0x20000], si
mov edi, 0xffff
mov dword [ebp + edx*4], eax
imul eax, dword [ebx + ecx], 0x9e3779b1
shr eax, 0x11
mov edx, ecx
sub edx, dword [ebp + eax*4]
cmp edx, 0xffff
cmovae edx, edi
movzx esi, cx
mov word [ebp + esi*2 + 0x20000], dx
mov edx, dword [esp + 0x38]
mov dword [ebp + eax*4], ecx
lea eax, [ecx + 2]
add ecx, 1
cmp ecx, edx
mov ecx, eax
jne 0x5121d0
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
mov dword [ecx + 0x40014], eax
mov edx, dword [esp + 0x44]
imul eax, dword [edx], 0x9e3779b1
shr eax, 0x11
mov eax, dword [ecx + eax*4]
mov dword [esp + 8], eax
lea eax, [edx + 4]
mov dword [esp + 0x80], eax
lea eax, [edx + 8]
mov dword [esp + 0x6c], eax
mov ebx, dword [esp]
movzx eax, bx
mov ecx, ebx
shr ecx, 0x10
xor ecx, eax
movzx eax, bl
shr ebx, 0x18
mov dword [esp + 0xdc], ebx
xor eax, ebx
or eax, ecx
sete byte [esp + 0x58]
neg edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x10], 3
mov dword [esp + 0xe0], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x10c]
mov cl, byte [esp + 0xac]
mov esi, dword [esp + 0x24]
nop dword [eax + eax]
mov edi, dword [esp + 8]
cmp edi, dword [esp + 0x30]
jb 0x512e00
test eax, eax
jle 0x512e00
test cl, cl
mov dword [esp + 0x18], eax
je 0x512320
mov edx, dword [esp + 0x34]
sub edx, edi
cmp edx, 8
jae 0x512320
mov edx, dword [esp + 0x10]
xor eax, eax
jmp 0x512650
mov ebx, esi
sub ebx, edi
jbe 0x512400
cmp edi, dword [esp + 0x90]
mov edx, dword [esp + 0x10]
ja 0x512cf3
mov eax, dword [esp + 0xd4]
add edi, eax
mov eax, dword [esp]
cmp dword [edi], eax
jne 0x512470
add ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
cmp ebx, eax
mov edx, ebx
cmova edx, eax
add edi, 4
mov dword [esp + 4], edx
lea eax, [edx - 3]
cmp eax, dword [esp + 0x80]
jbe 0x512d03
mov edx, dword [esp + 0x80]
mov edx, dword [edx]
xor edx, dword [edi]
je 0x51247b
bsf edx, edx
shr edx, 3
mov edi, dword [esp + 8]
lea eax, [edx + 4]
cmp ebx, dword [esp + 0x3c]
jae 0x5124ea
mov ecx, eax
mov eax, dword [esp + 0x44]
add edx, eax
add edx, 4
mov ebp, dword [esp + 4]
cmp edx, ebp
jne 0x5124fb
mov eax, dword [esp + 0x48]
mov edx, eax
mov ebx, ebp
cmp dword [esp + 0xc], ebp
jbe 0x51258b
mov edx, dword [ebp]
xor edx, dword [eax]
je 0x512581
bsf ebx, edx
shr ebx, 3
mov edx, dword [esp + 0x10]
mov eax, ecx
mov cl, byte [esp + 0xac]
add eax, ebx
cmp eax, edx
jg 0x512634
jmp 0x512650
mov eax, dword [esp + 0x60]
lea ebx, [eax + edi]
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
movzx edx, word [eax + edi - 1]
cmp dx, word [edi + ebx - 1]
mov edx, edi
jne 0x512470
mov eax, dword [esp]
cmp dword [ebx], eax
jne 0x512470
lea edx, [ebx + 4]
mov eax, dword [esp + 0x80]
cmp dword [esp + 0xc], eax
mov edi, dword [esp + 8]
jbe 0x512d2e
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
xor eax, dword [edx]
je 0x512515
bsf eax, eax
shr eax, 3
mov edx, dword [esp + 0x10]
add eax, 4
cmp eax, edx
jg 0x512643
jmp 0x512650
mov edi, dword [esp + 8]
xor eax, eax
jmp 0x512650
add edi, 4
mov edx, dword [esp + 0x6c]
cmp edx, eax
jae 0x5124a3
mov esi, dword [esp + 0xe8]
add esi, edx
nop
mov ebp, dword [edx]
xor ebp, dword [edi]
jne 0x5124cd
add edx, 4
add edi, 4
add esi, 4
cmp edx, eax
jb 0x512490
mov eax, dword [esp + 4]
add eax, 0xffffffff
cmp edx, eax
jae 0x512cba
movzx eax, word [edi]
cmp ax, word [edx]
mov esi, dword [esp + 0x24]
jne 0x512cbe
add edx, 2
add edi, 2
jmp 0x512cbe
bsf edx, ebp
shr edx, 3
add edx, esi
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 8]
lea eax, [edx + 4]
cmp ebx, dword [esp + 0x3c]
jb 0x51239d
mov edx, dword [esp + 0x10]
cmp eax, edx
jle 0x512650
jmp 0x512634
mov edx, dword [esp + 0x10]
mov eax, ecx
mov cl, byte [esp + 0xac]
cmp eax, edx
jg 0x512634
jmp 0x512650
add edx, 4
mov ecx, dword [esp + 0x6c]
cmp ecx, dword [esp + 0xc]
jae 0x512d3f
mov eax, dword [esp + 0xe8]
lea edi, [eax + ecx]
mov eax, ecx
mov cl, byte [esp + 0xac]
nop dword [eax]
mov esi, dword [eax]
xor esi, dword [edx]
jne 0x5125fd
add eax, 4
add edx, 4
add edi, 4
cmp eax, dword [esp + 0xc]
jb 0x512540
cmp eax, dword [esp + 0x108]
jae 0x512d55
movzx esi, word [edx]
cmp si, word [eax]
mov edi, dword [esp + 8]
jne 0x512578
add eax, 2
add edx, 2
mov esi, dword [esp + 0x24]
jmp 0x512d5d
lea ebx, [ebp + 4]
mov edx, dword [esp + 0xf8]
cmp ebx, dword [esp + 0xc]
jae 0x512d89
mov esi, dword [esp + 0x78]
sub esi, edi
mov eax, dword [esp + 0xb4]
cmp eax, esi
cmovb esi, eax
mov edi, ebx
sub edi, esi
mov eax, ecx
mov cl, byte [esp + 0xac]
nop word cs:[eax + eax]
nop
mov esi, dword [ebx]
xor esi, dword [edx]
jne 0x51261a
add ebx, 4
add edx, 4
add edi, 4
cmp ebx, dword [esp + 0xc]
jb 0x5125c0
cmp ebx, dword [esp + 0x108]
jae 0x512d9f
movzx esi, word [edx]
cmp si, word [ebx]
mov edi, dword [esp + 8]
jne 0x5125f4
add ebx, 2
add edx, 2
mov esi, dword [esp + 0x24]
jmp 0x512da7
bsf eax, esi
shr eax, 3
add eax, edi
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 8]
add eax, 4
cmp eax, edx
jg 0x512643
jmp 0x512650
bsf ebx, esi
shr ebx, 3
add ebx, edi
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 8]
add eax, ebx
cmp eax, edx
jle 0x512650
mov edx, ecx
mov ecx, eax
mov eax, dword [esp + 0x60]
lea ebx, [eax + edi]
mov eax, ecx
mov ecx, edx
mov dword [esp + 0xe0], ebx
mov edx, eax
nop dword [eax]
cmp eax, edx
mov dword [esp + 0x10], edx
jne 0x512730
add edx, edi
cmp edx, dword [esp + 0x34]
ja 0x512730
cmp eax, 4
jl 0x512730
mov dword [esp + 0x70], eax
add eax, 0xfffffffd
mov dword [esp + 4], eax
xor ebx, ebx
mov esi, 0x10
mov dword [esp + 8], edi
mov edi, 1
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x20]
nop word cs:[eax + eax]
nop
mov eax, dword [esp + 8]
lea ebp, [ebx + eax]
movzx ebp, bp
movzx eax, word [ecx + ebp*2 + 0x20000]
lea ebp, [esi + 1]
sar esi, 4
cmp edi, eax
cmovb edi, eax
mov eax, 0x10
cmovb ebp, eax
cmovb edx, ebx
add ebx, esi
mov esi, ebp
cmp ebx, dword [esp + 4]
jl 0x5126a0
mov dword [esp + 0x20], edx
xor ebx, ebx
mov edx, dword [esp + 8]
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 + 8], edx
cmp edi, 1
jbe 0x51271f
mov al, byte [esp + 4]
mov bl, al
or ebx, 2
mov eax, dword [esp + 0x70]
mov dword [esp + 0x10], eax
mov cl, byte [esp + 0xac]
mov esi, dword [esp + 0x24]
jmp 0x51292a
mov cl, byte [esp + 0xac]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 8]
nop
movzx eax, di
mov edx, dword [esp + 0x4c]
cmp word [edx + eax*2 + 0x20000], 1
jne 0x512850
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x512910
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x512859
mov ebp, edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x5c], edi
cmp eax, 2
jne 0x5128f6
mov edi, ebp
add ebp, 0xffffffff
mov dword [esp + 0x70], ebp
cmp ebp, dword [esp + 0x30]
jb 0x5128ce
mov eax, esi
sub eax, edi
mov dword [esp + 0x1c], 2
cmp eax, 3
jb 0x512910
mov ebx, dword [esp + 0x70]
cmp ebx, esi
mov ebp, dword [esp + 0x60]
cmovb ebp, dword [esp + 0xd4]
mov eax, dword [esp]
cmp dword [ebp + ebx], eax
jne 0x5128fe
mov dword [esp + 8], edi
cmp ebx, esi
mov ecx, dword [esp + 0x3c]
cmovb ecx, dword [esp + 0xcc]
mov edx, ebp
mov dword [esp + 0x1c], ebp
lea eax, [ebp + ebx]
mov dword [esp + 4], eax
lea edx, [eax + 4]
lea esi, [ecx - 3]
mov ebp, edx
cmp esi, edx
jbe 0x512816
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x1c]
add edi, eax
add edi, 3
mov ebp, edx
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [ebp]
xor eax, dword [esp]
jne 0x51293f
add ebp, 4
add edi, 4
cmp ebp, esi
jb 0x512800
cmp ebp, ecx
mov edi, dword [esp + 0x88]
jae 0x51294e
mov esi, ecx
sub esi, ebp
mov ebx, dword [esp]
cmp byte [ebp], bl
jne 0x51283e
add ebp, 1
shr ebx, 8
add esi, 0xffffffff
jne 0x51282c
mov ebp, ecx
mov ebx, dword [esp + 0x70]
jmp 0x51294e
mov edx, dword [esp + 0x20]
jmp 0x512910
mov dword [esp + 0x1c], 1
cmp byte [esp + 0x58], 0
je 0x512910
mov edx, dword [esp + 0x80]
mov ebp, edi
mov edi, dword [esp + 0xd0]
mov eax, edx
cmp dword [esp + 0xc], edx
jbe 0x512d17
nop dword [eax + eax]
mov edx, dword [eax]
xor edx, dword [esp]
jne 0x5128d4
add eax, 4
add edi, 4
cmp eax, dword [esp + 0xc]
jb 0x512890
mov edx, dword [esp + 0x3c]
cmp eax, edx
jae 0x5128dc
mov esi, edx
sub esi, edi
lea edi, [eax + esi]
mov edx, dword [esp]
cmp byte [eax], dl
jne 0x5128c6
add eax, 1
shr edx, 8
add esi, 0xffffffff
jne 0x5128b5
mov eax, edi
mov edi, eax
mov esi, dword [esp + 0x24]
jmp 0x5128dc
mov dword [esp + 0x1c], eax
jmp 0x512910
bsf eax, edx
shr eax, 3
add edi, eax
mov edx, dword [esp + 0x20]
add edi, dword [esp + 0x40]
mov eax, 2
mov dword [esp + 0x5c], edi
cmp eax, 2
je 0x512771
mov dword [esp + 0x1c], eax
mov edi, ebp
jmp 0x512910
mov cl, byte [esp + 0xac]
nop word cs:[eax + eax]
nop
lea eax, [edx + edi]
movzx eax, ax
mov edx, dword [esp + 0x4c]
movzx eax, word [edx + eax*2 + 0x20000]
sub edi, eax
mov dword [esp + 8], edi
xor ebx, ebx
mov eax, dword [esp + 0x18]
add eax, 0xffffffff
cmp ebx, 3
jne 0x5122e0
jmp 0x512e00
bsf ebp, eax
shr ebp, 3
add ebp, edi
mov edi, dword [esp + 0x88]
sub ebp, edx
add ebp, 4
cmp ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x48]
jae 0x51297c
mov eax, dword [esp + 4]
add eax, ebp
cmp eax, ecx
je 0x51298f
mov dword [esp + 0xc0], ebp
mov dword [esp + 0x104], edi
mov esi, edi
jmp 0x512a0d
mov dword [esp + 0xc0], ebp
mov dword [esp + 0x104], esi
jmp 0x512a0d
mov ebx, ebp
lea ecx, [ebp*8]
mov edx, dword [esp]
rol edx, cl
mov edi, esi
mov ecx, esi
cmp dword [esp + 0xc], esi
jbe 0x512ddc
nop dword [eax + eax]
mov eax, dword [ecx]
xor eax, edx
jne 0x5129ea
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 0xc]
jb 0x5129b0
mov eax, dword [esp + 0x3c]
cmp ecx, eax
jae 0x5129f2
mov esi, eax
sub esi, edi
lea edi, [ecx + esi]
cmp byte [ecx], dl
jne 0x5129e2
add ecx, 1
shr edx, 8
add esi, 0xffffffff
jne 0x5129d1
mov ecx, edi
mov edi, ecx
mov esi, dword [esp + 0x48]
jmp 0x5129f2
bsf eax, eax
shr eax, 3
add edi, eax
sub ebx, esi
add ebx, edi
mov dword [esp + 0xc0], ebx
mov eax, dword [esp + 0x88]
mov dword [esp + 0x104], eax
mov esi, eax
mov eax, dword [esp]
mov dword [esp + 0x98], eax
mov dword [esp + 0xc8], esi
lea eax, [esi + 4]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x1c]
lea eax, [edx + ecx]
xor ebp, ebp
mov ecx, dword [esp + 4]
mov edi, ecx
nop dword [eax + eax]
mov edx, ebp
mov esi, edi
lea ebx, [ecx + ebp]
cmp ebx, dword [esp + 0x20]
jb 0x512a60
lea ebp, [edx - 4]
lea edi, [esi - 4]
mov ecx, dword [esp]
cmp dword [eax + edx - 5], ecx
mov ecx, dword [esp + 4]
je 0x512a40
mov dword [esp + 0x20], eax
lea edi, [edx + eax]
add edi, 0xffffffff
cmp ebx, dword [esp + 0xc8]
jbe 0x512ace
mov eax, dword [esp + 0xdc]
mov ebp, dword [esp + 0x20]
cmp byte [edx + ebp - 2], al
jne 0x512ace
mov eax, dword [esp + 0x104]
sub eax, dword [esp + 8]
sub eax, dword [esp + 0x1c]
sub eax, edx
lea ecx, [eax + ebx]
add ecx, 1
lea edx, [esp + 0x9a]
mov ebp, dword [esp + 0xc8]
nop dword [eax]
lea edi, [esi - 1]
cmp edi, ebp
jbe 0x512cec
movzx eax, byte [esi - 2]
lea ebx, [edx - 1]
mov esi, edi
cmp al, byte [edx]
mov edx, ebx
je 0x512ab0
mov ecx, dword [esp + 4]
mov eax, ecx
sub eax, edi
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x70]
cmp ebp, esi
jb 0x512bce
sub ecx, eax
cmp ecx, dword [esp + 0x48]
mov cl, byte [esp + 0xac]
jne 0x512bd5
cmp dword [esp + 0xb0], esi
jae 0x512bd5
mov dword [esp + 0x20], eax
mov ecx, eax
neg ecx
shl ecx, 3
mov eax, dword [esp]
rol eax, cl
mov dword [esp + 0x98], eax
mov dword [esp + 4], eax
shr eax, 0x18
mov dword [esp + 0x1c], eax
mov ebp, dword [esp + 0xf0]
mov esi, dword [esp + 0xcc]
mov ebx, dword [esp + 0xc4]
nop dword [eax]
mov edx, ebx
mov ecx, esi
mov edi, ebp
lea esi, [ebx + 1]
mov dword [esp + 8], esi
cmp esi, dword [esp + 0xa8]
jb 0x512b68
lea ebx, [edx - 4]
lea esi, [ecx - 4]
lea ebp, [edi + 4]
mov eax, dword [esp + 4]
cmp dword [edx - 3], eax
je 0x512b40
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x88]
jbe 0x512dcf
mov ebx, dword [esp + 0x1c]
cmp byte [edx], bl
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x70]
jne 0x512bc1
add dword [esp + 8], edi
lea esi, [esp + 0x9a]
mov edi, dword [esp + 0x88]
nop dword [eax + eax]
cmp edx, edi
jbe 0x512cfa
movzx ebx, byte [edx - 1]
add edx, 0xffffffff
lea ecx, [esi - 1]
cmp bl, byte [esi]
mov esi, ecx
je 0x512ba0
add edx, 1
mov ecx, edx
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
add eax, dword [esp + 0xcc]
sub eax, ecx
mov cl, byte [esp + 0xac]
mov ebx, ebp
sub ebx, eax
mov eax, dword [esp + 0x30]
cmp ebx, eax
cmovbe ebx, eax
mov edx, ebx
sub ebp, ebx
mov ebx, dword [esp + 0xc0]
add ebp, ebx
mov eax, dword [esp + 0x5c]
cmp ebx, eax
ja 0x512c34
cmp ebp, eax
jb 0x512c34
mov edx, dword [esp + 0x70]
sub edx, eax
mov edi, dword [esp + 0xc0]
add edi, edx
mov eax, edi
not eax
add eax, esi
cmp eax, 3
cmovb edi, esi
mov dword [esp + 0x20], 0
mov ebx, 2
mov dword [esp + 0x1c], 2
mov dword [esp + 8], edi
jmp 0x51292a
mov eax, edx
not eax
add eax, esi
mov dword [esp + 0x20], 0
mov ebx, 2
cmp eax, 3
jae 0x512c5d
mov dword [esp + 0x1c], 2
mov dword [esp + 8], esi
jmp 0x51292a
mov eax, dword [esp + 0x5c]
cmp ebp, eax
cmovae ebp, eax
cmp dword [esp + 0x10], ebp
jae 0x512c8e
mov eax, dword [esp + 0x34]
sub eax, edx
cmp eax, 0xffff
ja 0x512e00
mov eax, dword [esp + 0x60]
add eax, edx
mov dword [esp + 0xe0], eax
mov dword [esp + 0x10], ebp
movzx eax, dx
mov edi, dword [esp + 0x4c]
movzx eax, word [edi + eax*2 + 0x20000]
mov dword [esp + 0x1c], 2
sub edx, eax
mov dword [esp + 8], edx
mov eax, dword [esp + 0x18]
jae 0x51292e
jmp 0x512e00
mov esi, dword [esp + 0x24]
cmp edx, dword [esp + 4]
jae 0x512ccf
mov ch, byte [edi]
xor eax, eax
cmp ch, byte [edx]
sete al
add edx, eax
mov edi, dword [esp + 8]
sub edx, dword [esp + 0x80]
lea eax, [edx + 4]
cmp ebx, dword [esp + 0x3c]
jb 0x51239d
jmp 0x5124ea
mov edi, ecx
jmp 0x512aca
xor eax, eax
jmp 0x512650
mov ecx, dword [esp + 8]
jmp 0x512bbd
mov edx, dword [esp + 0x80]
cmp edx, eax
jb 0x512486
jmp 0x5124a3
mov ebx, edx
mov eax, edx
mov edi, ebx
mov edx, dword [esp + 0x3c]
cmp eax, edx
jb 0x5128ab
jmp 0x5128dc
mov ecx, dword [esp + 0x80]
cmp ecx, dword [esp + 0xc]
jb 0x512526
mov eax, ecx
mov cl, byte [esp + 0xac]
cmp eax, dword [esp + 0x108]
jb 0x512566
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 8]
cmp eax, dword [esp + 0x3c]
jae 0x512d6e
mov ch, byte [edx]
xor edx, edx
cmp ch, byte [eax]
sete dl
add eax, edx
mov edx, dword [esp + 0x10]
sub eax, dword [esp + 0x80]
add eax, 4
cmp eax, edx
jg 0x512643
jmp 0x512650
mov eax, ecx
mov cl, byte [esp + 0xac]
cmp ebx, dword [esp + 0x108]
jb 0x5125e2
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 8]
cmp ebx, dword [esp + 0x3c]
jae 0x512db8
mov ch, byte [edx]
xor edx, edx
cmp ch, byte [ebx]
sete dl
add ebx, edx
mov edx, dword [esp + 0x10]
sub ebx, dword [esp + 4]
add eax, ebx
cmp eax, edx
jg 0x512634
jmp 0x512650
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x70]
jmp 0x512bc1
mov edi, esi
mov ecx, esi
mov eax, dword [esp + 0x3c]
cmp ecx, eax
jb 0x5129ca
jmp 0x5129f2
mov edx, dword [esp + 0x10]
cmp edx, 4
mov esi, dword [esp + 0x68]
jl 0x5131a0
lea eax, [edx - 0x13]
cmp eax, 0x12
mov ebx, edx
mov eax, 0x12
cmovb ebx, eax
test cl, cl
cmove ebx, edx
jmp 0x512e6e
mov dword [esp + 0x34], eax
jmp 0x5131a7
mov edx, dword [esp]
cmp edx, dword [esp + 0xc0]
jle 0x513198
lea eax, [edx - 0x13]
cmp eax, 0x12
mov ecx, edx
mov eax, 0x12
cmovb ecx, eax
cmp byte [esp + 0xac], 0
cmove ecx, edx
test ecx, ecx
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x38]
je 0x5131e3
mov ebx, ecx
mov eax, dword [esp + 0xe0]
sub dword [esp + 0x44], eax
cmp ebx, dword [esp + 0x9c]
mov edi, dword [esp + 0x64]
mov dword [esp + 8], ebx
ja 0x513217
mov eax, dword [esp + 0x8c]
add eax, ebx
cmp eax, 0xfff
jg 0x513217
mov eax, dword [esp + 0xfc]
mov esi, dword [esi + 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], esi
mov eax, esi
mov dword [esp + 4], ecx
cmovge eax, ecx
mov esi, dword [esp + 0xa0]
sub esi, eax
mov eax, ebx
cmp ebx, 0xe
jle 0x512ef6
mov ebp, dword [esp]
lea eax, [ebp - 0xe]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [edx + ebp]
add eax, 2
add eax, esi
cmp eax, edi
mov edi, dword [esp + 0x8c]
jge 0x512f28
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0xb8]
lea ebp, [edx + ecx]
mov dword [edx + ecx + 8], 1
mov dword [edx + ecx + 4], 0
mov dword [edx + ecx + 0xc], ebx
mov dword [ebp], eax
mov ecx, dword [esp]
lea ebx, [ecx + 2]
mov eax, ebx
cmp ecx, 0xd
jl 0x512f4b
mov ebp, dword [esp]
lea eax, [ebp - 0xd]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [edx + ebp]
add eax, 3
add eax, esi
lea ecx, [edi + 2]
shl ecx, 4
mov edx, dword [esp + 0x68]
cmp eax, dword [edx + ecx]
jge 0x512f80
mov edi, dword [esp + 0x68]
lea edx, [edi + ecx]
mov dword [edi + ecx + 8], 1
mov dword [edi + ecx + 4], 0
mov dword [edi + ecx + 0xc], ebx
mov edi, dword [esp + 0x8c]
mov dword [edx], eax
mov ecx, dword [esp]
lea eax, [ecx + 3]
mov ebp, eax
cmp ecx, 0xc
jl 0x512fa3
mov ebx, dword [esp]
lea eax, [ebx - 0xc]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [ebx + edx]
add eax, 4
add eax, esi
lea ecx, [edi + 3]
shl ecx, 4
mov edx, dword [esp + 0x68]
cmp eax, dword [edx + ecx]
mov ebx, dword [esp + 0xfc]
jge 0x512fd8
mov esi, dword [esp + 0x68]
lea edx, [esi + ecx]
mov dword [esi + ecx + 8], 1
mov dword [esi + ecx + 4], 0
mov dword [esi + ecx + 0xc], ebp
mov dword [edx], eax
mov esi, dword [esp + 8]
cmp esi, 3
jg 0x513051
mov eax, dword [esp + 0x14]
shl eax, 4
mov esi, dword [esp + 0x68]
mov dword [esi + eax + 0x18], 1
mov dword [esi + eax + 0x14], 0
mov dword [esi + eax + 0x1c], 1
mov ecx, dword [esi + eax]
lea edx, [ecx + 1]
mov dword [esi + eax + 0x10], edx
mov dword [esi + eax + 0x28], 1
mov dword [esi + eax + 0x24], 0
mov dword [esi + eax + 0x2c], 2
lea edx, [ecx + 2]
mov dword [esi + eax + 0x20], edx
mov dword [esi + eax + 0x38], 1
mov dword [esi + eax + 0x34], 0
mov dword [esi + eax + 0x3c], 3
add ecx, 3
mov dword [esi + eax + 0x30], ecx
jmp 0x5131a0
mov ecx, dword [esp]
sub edi, ecx
shl edi, 4
mov eax, dword [esp + 0x68]
add edi, eax
mov dword [esp + 0x20], edi
mov edx, dword [esp + 4]
add edx, 3
cmp ecx, 0xf
cmovge ebp, edx
mov eax, dword [eax + ebx + 8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebp
lea eax, [ebp + 1]
mov dword [esp + 0x30], eax
neg esi
mov ebx, 5
mov edi, dword [esp + 0xa4]
jmp 0x5130ea
mov dword [esp + 4], eax
mov eax, esi
mov esi, dword [esp + 0x14]
cmp esi, ebp
cmovge ebp, esi
lea ecx, [eax + ebx]
cmp ecx, 1
cmove esi, ebp
mov dword [esp + 0x14], esi
mov esi, eax
mov eax, dword [esp + 8]
mov dword [edi + 8], eax
mov ecx, dword [esp + 0x44]
mov dword [edi + 4], ecx
mov eax, dword [esp + 4]
mov dword [edi + 0xc], eax
mov dword [edi], edx
lea eax, [esi + ebx]
add eax, 1
add ebx, 1
add edi, 0x10
cmp eax, 2
je 0x512fe1
lea ecx, [ebx - 1]
mov eax, dword [esp + 0x94]
lea ebp, [eax + ebx]
cmp dword [esp + 0x10], 1
mov dword [esp + 8], ecx
jne 0x513150
xor ecx, ecx
mov eax, dword [esp]
cmp dword [esp + 0x8c], eax
jle 0x513116
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov edx, dword [esp + 0x18]
cmp dword [esp + 8], 0x13
jb 0x513132
lea eax, [ebx - 0x14]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, dword [esp + 0x30]
add edx, ecx
mov eax, dword [esp]
mov ecx, dword [esp + 0x14]
add ecx, 3
cmp ebp, ecx
jg 0x5130a0
jmp 0x513182
mov edx, 3
cmp ecx, 0x13
jb 0x51316a
lea eax, [ebx - 0x14]
mov ecx, 0x80808081
mul ecx
shr edx, 7
add edx, 4
add edx, dword [esp + 0xa0]
xor eax, eax
mov ecx, dword [esp + 0x14]
add ecx, 3
cmp ebp, ecx
jg 0x5130a0
mov ecx, dword [edi]
add ecx, dword [esp + 0xd8]
cmp edx, ecx
jle 0x5130a0
jmp 0x5130d5
mov esi, dword [esp + 0x68]
nop dword [eax]
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0x38]
add edx, 1
add dword [esp + 0x94], 1
add dword [esp + 0xe8], 0xffffffff
add dword [esp + 0x78], 1
add dword [esp + 0xd0], 1
add dword [esp + 0xa4], 0x10
mov eax, dword [esp + 0x34]
cmp dword [esp + 0x14], ecx
jg 0x511480
jmp 0x5131ec
mov ecx, dword [esp + 0xbc]
jmp 0x5131ab
mov ecx, dword [esp + 0x14]
mov eax, ecx
shl eax, 4
mov edx, dword [esi + eax + 4]
mov dword [esp + 0x44], edx
mov edx, dword [esi + eax + 8]
mov eax, ecx
mov dword [esp + 8], edx
sub eax, edx
mov dword [esp + 0x8c], eax
mov dword [esp + 0xbc], ecx
mov ebx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 8]
nop word cs:[eax + eax]
mov eax, ebx
shl eax, 4
mov ebp, dword [esi + eax + 4]
mov edi, dword [esi + eax + 8]
mov dword [esi + eax + 8], edx
mov dword [esi + eax + 4], ecx
mov edx, edi
mov ecx, ebp
sub ebx, edi
jge 0x513230
cmp dword [esp + 0xbc], 0
jle 0x51357a
xor ebx, ebx
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x84]
jmp 0x513289
add dword [esp + 0x28], 1
add ebx, 1
mov ecx, dword [esp + 0x74]
cmp ebx, dword [esp + 0xbc]
jge 0x510351
mov ecx, ebx
shl ecx, 4
mov eax, dword [esi + ecx + 8]
mov dword [esp + 0x14], eax
cmp eax, 1
je 0x513270
mov edi, dword [esp + 0x28]
mov dword [esp + 0x2c], edx
sub edi, edx
mov eax, edi
mov edx, 0x80808081
mul edx
mov eax, dword [esi + ecx + 4]
mov ecx, edi
mov dword [esp + 8], eax
cmp dword [esp + 0x13c], 0
mov dword [esp + 0x84], ebp
je 0x5132de
shr edx, 7
add edx, ebp
lea eax, [ecx + edx]
add eax, 9
cmp eax, dword [esp + 0x7c]
ja 0x5137a4
lea esi, [ebp + 1]
cmp ecx, 0xf
mov dword [esp + 0x50], ecx
mov dword [esp + 4], ebx
jb 0x513340
lea eax, [ecx - 0xf]
mov byte [ebp], 0xf0
cmp eax, 0xff
jb 0x513339
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 + 0x5c]
add esp, 0xc
mov eax, edi
shl eax, 8
lea esi, [edi + ebp]
add esi, 2
sub edi, eax
lea eax, [ecx + edi]
add eax, 0xfffffef2
mov byte [esi], al
add esi, 1
jmp 0x513348
mov eax, ecx
shl al, 4
mov byte [ebp], al
mov eax, dword [esp + 0x28]
lea ebx, [esi + eax]
mov edx, dword [esp + 0x2c]
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 + 0x34], ecx
add edi, ecx
mov ecx, eax
mov dword [esp], edi
cmp edi, 0x18
mov edi, eax
jb 0x513450
cmp ebx, esi
cmova esi, ebx
add esi, dword [esp + 0x34]
and esi, 0xfffffff8
mov eax, dword [esp + 0x2c]
add eax, esi
add eax, 8
cmp edi, eax
jae 0x5133ad
lea eax, [edi + esi]
add eax, 8
mov esi, dword [esp + 0x2c]
mov edx, esi
mov ecx, edi
cmp esi, eax
jb 0x513450
mov esi, edi
mov eax, dword [esp]
shr eax, 3
add eax, 1
mov dword [esp], eax
and eax, 0xfffffffc
mov dword [esp + 0x34], eax
add eax, 0xfffffffc
mov ecx, eax
shr ecx, 2
add ecx, 1
test eax, eax
je 0x513562
mov edx, ecx
and edx, 0xfffffffe
xor edi, edi
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 4]
nop word cs:[eax + eax]
nop
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 0x5133f0
test cl, 1
je 0x513435
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 + 0x34]
cmp dword [esp], ecx
je 0x513472
mov eax, dword [esp + 0x2c]
lea edx, [eax + ecx*8]
lea ecx, [esi + ecx*8]
mov edi, esi
nop word [eax + eax]
mov ebx, dword [esp + 4]
mov esi, edi
nop word cs:[eax + eax]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, ebp
jb 0x513460
mov eax, dword [esp + 0x14]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
mov eax, dword [esp + 8]
mov word [ebp], ax
cmp dword [esp + 0x13c], 0
mov edi, dword [esp + 0x84]
je 0x5134ae
shr edx, 7
lea eax, [edx + ebp]
add eax, 8
cmp eax, dword [esp + 0x7c]
ja 0x5137a4
add ebp, 2
mov al, byte [edi]
cmp ecx, 0xf
jb 0x513532
add al, 0xf
mov byte [edi], al
mov edi, dword [esp + 0x14]
lea eax, [edi - 0x13]
cmp eax, 0x1fe
jb 0x51350f
lea eax, [edi - 0x211]
mov ecx, 0x80808081
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 + 0x50]
lea eax, [eax + edi*2]
lea ebp, [esi + eax]
add ebp, 4
imul eax, edi, 0xfffffe02
mov edi, dword [esp + 0x14]
add eax, edi
add eax, 0xfffffdef
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x68]
cmp eax, 0xff
jb 0x51352a
add eax, 0xffffff01
mov byte [ebp], 0xff
add ebp, 1
mov byte [ebp], al
add ebp, 1
jmp 0x513542
add al, cl
mov byte [edi], al
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x14]
add ebx, edi
mov edx, dword [esp + 0x28]
add edx, edi
mov eax, edx
mov dword [esp + 0x28], edx
cmp ebx, dword [esp + 0xbc]
jl 0x513289
jmp 0x510351
xor edi, edi
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 4]
test cl, 1
jne 0x513423
jmp 0x513435
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x84]
jmp 0x510351
xor edi, edi
mov eax, dword [esp + 0x2c]
test dl, 1
je 0x5135ab
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 0x5135d2
mov eax, dword [esp + 0x2c]
lea edx, [eax + ecx*8]
lea ecx, [ebx + ecx*8]
mov edi, ebx
mov ebx, edi
nop
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, esi
jb 0x5135c0
mov eax, dword [esp + 0x14]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
mov eax, dword [esp + 8]
mov word [esi], ax
cmp dword [esp + 0x13c], 0
mov edi, dword [esp + 0x84]
je 0x51360d
shr edx, 7
lea eax, [esi + edx]
add eax, 8
cmp eax, dword [esp + 0x7c]
ja 0x5137a4
add esi, 2
mov al, byte [edi]
cmp ecx, 0xf
jb 0x51368b
add al, 0xf
mov byte [edi], al
mov edi, dword [esp + 0x14]
lea eax, [edi - 0x13]
cmp eax, 0x1fe
jb 0x51366e
lea eax, [edi - 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 + 0x38]
lea eax, [eax + edi*2]
lea esi, [ebx + eax]
add esi, 4
imul eax, edi, 0xfffffe02
mov edi, dword [esp + 0x14]
add eax, edi
add eax, 0xfffffdef
mov ecx, dword [esp + 0x74]
cmp eax, 0xff
jb 0x513684
add eax, 0xffffff01
mov byte [esi], 0xff
add esi, 1
mov byte [esi], al
add esi, 1
jmp 0x513697
add al, cl
mov byte [edi], al
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
add edx, edi
mov eax, edx
mov dword [esp + 0x28], edx
mov ebp, esi
jmp 0x510351
mov esi, dword [esp + 0x78]
mov ebx, dword [esp + 0x9c]
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0xf4]
mov ebp, ebx
add edi, ecx
xor ecx, ecx
mov eax, dword [esp + 0x13c]
mov edx, esi
mov esi, eax
cmp eax, 2
sete bl
mov dword [esp + 0x58], edx
sub edi, edx
lea eax, [edi + 0xf0]
mov edx, 0x80808081
mul edx
test esi, esi
je 0x513730
shr edx, 7
add edx, edi
mov cl, bl
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0xc4]
add ecx, eax
mov eax, ebp
lea eax, [edx + ebp]
add eax, 1
cmp eax, ecx
jbe 0x513730
xor edi, edi
cmp dword [esp + 0x13c], 1
je 0x513b0f
mov eax, ebp
not eax
lea edi, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub edi, eax
mov eax, dword [esp + 0x58]
lea esi, [eax + edi]
cmp edi, 0xf
jb 0x513793
mov ebx, edi
lea eax, [edi - 0xf]
mov byte [ebp], 0xf0
lea ecx, [ebp + 1]
cmp eax, 0xff
jb 0x513886
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 0x513888
mov ebx, edi
mov eax, ebx
shl al, 4
mov edi, ebp
mov byte [ebp], al
jmp 0x51388e
mov esi, dword [esp + 0x7c]
xor edi, edi
cmp dword [esp + 0x13c], 2
jne 0x513aff
mov ebx, dword [esp + 0x28]
sub ebx, dword [esp + 0x2c]
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
add edx, ebx
lea ecx, [esi - 3]
mov ebp, dword [esp + 0x84]
lea eax, [edx + ebp]
add eax, 1
cmp eax, ecx
ja 0x5138c5
sub ecx, eax
mov edx, ecx
shl edx, 8
sub edx, ecx
add edx, 0x12
mov ecx, dword [esp + 0x14]
cmp ecx, edx
cmovbe edx, ecx
add eax, 2
not eax
add eax, esi
add eax, edx
add eax, 5
cmp eax, 0xc
jl 0x5138c5
mov dword [esp + 0xc], edx
mov ecx, ebp
add ebp, 1
cmp ebx, 0xf
jb 0x5138ce
lea eax, [ebx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
mov esi, dword [esp + 0x28]
jb 0x51387e
lea eax, [ebx - 0x10e]
mov dword [esp + 0x84], ecx
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
mov ecx, dword [esp + 0x84]
lea ebp, [edi + ecx]
add ebp, 2
sub edi, eax
lea eax, [ebx + edi]
add eax, 0xfffffef2
mov byte [ebp], al
add ebp, 1
jmp 0x5138d9
mov edx, ebx
mov byte [ecx], al
mov edi, ecx
mov ebx, edx
lea eax, [edi + 1]
push ebx
push dword [esp + 0x5c]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
add edi, 1
sub esi, dword [esp + 0x74]
mov eax, dword [esp + 0x130]
mov dword [eax], esi
sub edi, dword [esp + 0x12c]
test edi, edi
jg 0x513b1a
jmp 0x513b0f
mov ecx, dword [esp + 0x74]
jmp 0x5139d8
mov eax, ebx
shl al, 4
mov byte [ecx], al
mov esi, dword [esp + 0x28]
lea edx, [esi + ebp]
sub edx, dword [esp + 0x2c]
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 0x51391f
cmp edx, edi
cmova edi, edx
lea edx, [edi + esi]
add edx, 8
and edx, 0xfffffff8
mov edi, dword [esp + 0x2c]
lea esi, [edi + edx]
cmp ebp, esi
jae 0x513b27
add edx, ebp
cmp edi, edx
jae 0x513b27
mov eax, ebp
mov edi, dword [esp + 0x84]
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x2c]
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ecx
jb 0x513930
mov eax, dword [esp + 8]
mov word [ecx], ax
add ecx, 2
lea edx, [esi - 4]
mov al, byte [edi]
cmp edx, 0xf
jb 0x5139c4
add al, 0xf
mov byte [edi], al
lea eax, [esi - 0x13]
cmp eax, 0x1fe
jb 0x5139a1
lea eax, [esi - 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
add esp, 0xc
lea eax, [ebx + edi*2]
lea ecx, [eax + ebp]
add ecx, 4
imul eax, edi, 0xfffffe02
add eax, esi
add eax, 0xfffffdef
mov edx, dword [esp + 0x28]
cmp eax, 0xff
jb 0x5139b7
add eax, 0xffffff01
mov byte [ecx], 0xff
add ecx, 1
mov byte [ecx], al
add ecx, 1
add edx, esi
mov dword [esp + 0x2c], edx
jmp 0x5139d2
add al, dl
mov byte [edi], al
mov eax, dword [esp + 0x28]
add eax, esi
mov dword [esp + 0x2c], eax
mov ebp, ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x84], ebp
mov edi, dword [esp + 0xf4]
add edi, ecx
xor ecx, ecx
mov esi, dword [esp + 0x13c]
cmp esi, 2
sete bl
sub edi, dword [esp + 0x2c]
lea eax, [edi + 0xf0]
mov edx, 0x80808081
mul edx
test esi, esi
je 0x513a57
shr edx, 7
add edx, edi
mov cl, bl
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0x7c]
add ecx, eax
mov eax, dword [esp + 0x84]
add eax, edx
add eax, 1
cmp eax, ecx
jbe 0x513a57
mov edi, 0
cmp dword [esp + 0x13c], 1
je 0x513aff
mov eax, dword [esp + 0x84]
not eax
lea edi, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub edi, eax
mov eax, dword [esp + 0x2c]
lea esi, [eax + edi]
cmp edi, 0xf
jb 0x513abb
mov ebx, edi
lea eax, [edi - 0xf]
mov edi, dword [esp + 0x84]
mov byte [edi], 0xf0
lea ecx, [edi + 1]
cmp eax, 0xff
jb 0x513acd
lea eax, [ebx - 0x10e]
mov edx, 0x80808081
mul edx
mov ebp, edi
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 0x513acf
mov ebx, edi
mov eax, ebx
shl al, 4
mov edi, dword [esp + 0x84]
mov byte [edi], al
jmp 0x513ad5
mov edx, ebx
mov byte [ecx], al
mov edi, ecx
mov ebx, edx
lea eax, [edi + 1]
push ebx
push dword [esp + 0x30]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
add edi, 1
sub esi, dword [esp + 0x74]
mov eax, dword [esp + 0x130]
mov dword [eax], esi
sub edi, dword [esp + 0x12c]
push dword [esp + 0x68]
call fcn.004f5d7c
add esp, 4
test edi, edi
jg 0x513b1a
mov eax, dword [esp + 0x4c]
mov byte [eax + 0x4001b], 1
mov eax, edi
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret
shr eax, 3
add eax, 1
mov edx, eax
and edx, 0xfffffffc
mov dword [esp + 4], edx
add edx, 0xfffffffc
mov esi, edx
shr esi, 2
add esi, 1
test edx, edx
mov dword [esp], esi
je 0x513cba
mov edx, esi
and edx, 0xfffffffe
xor edi, edi
mov esi, dword [esp + 0x2c]
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 0x513b57
jmp 0x513cbc
mov dword [esp + 0x40], edi
mov eax, dword [esp + 0x78]
mov dword [esp + 0x58], eax
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0xc], ecx
jmp 0x513bb9
mov eax, dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x58], eax
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x6c]
xor edi, edi
cmp dword [esp + 0x13c], 2
mov esi, dword [esp + 0xc4]
jne 0x513b0f
mov dword [esp + 0x6c], eax
mov edi, dword [esp + 0x40]
mov ebp, edi
sub ebp, dword [esp + 0x58]
lea eax, [ebp + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov dword [esp + 8], ebp
add edx, ebp
lea ecx, [esi - 3]
mov eax, dword [esp + 0xc]
add eax, edx
add eax, 1
cmp eax, ecx
ja 0x513ca2
sub ecx, eax
mov ebp, ecx
shl ebp, 8
sub ebp, ecx
add ebp, 0x12
cmp ebx, ebp
cmovbe ebp, ebx
add eax, 2
not eax
add eax, esi
add eax, ebp
add eax, 5
cmp eax, 0xc
jl 0x513ca2
mov ebx, dword [esp + 0xc]
lea esi, [ebx + 1]
mov ecx, dword [esp + 8]
cmp ecx, 0xf
mov dword [esp + 4], ebp
mov dword [esp + 0xc], ebx
jb 0x513d5d
lea eax, [ecx - 0xf]
mov byte [ebx], 0xf0
cmp eax, 0xff
jb 0x513c94
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 + 0x14]
add esp, 0xc
mov eax, edi
shl eax, 8
lea esi, [edi + ebx]
add esi, 2
sub edi, eax
lea eax, [ecx + edi]
add eax, 0xfffffef2
mov byte [esi], al
add esi, 1
mov edi, dword [esp + 0x40]
jmp 0x513d64
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0xf4]
mov esi, dword [esp + 0x58]
mov ebx, dword [esp + 0xc]
jmp 0x5136c0
xor edi, edi
test byte [esp], 1
je 0x513cd9
mov edx, dword [esp + 0x2c]
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 + 4]
cmp eax, edx
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0xc]
je 0x513942
lea eax, [eax + edx*8]
mov dword [esp + 0x2c], eax
lea eax, [edx*8]
add eax, ebp
jmp 0x51392c
mov eax, dword [esp + 0x64]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0xb8]
mov dword [esp + 0xc], esi
jmp 0x513bbd
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov dword [esp + 0xc], ecx
jmp 0x513bb9
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0xb4]
jmp 0x513bbd
mov eax, ecx
shl al, 4
mov byte [ebx], al
lea edx, [edi + esi]
mov eax, dword [esp + 0x58]
mov ebx, eax
sub edx, eax
lea edi, [esi + 8]
cmp edx, edi
mov eax, edi
cmova eax, edx
add ecx, esi
mov ebp, esi
not ebp
add eax, ebp
cmp eax, 0x18
jb 0x513dab
cmp edx, edi
cmova edi, edx
lea edx, [edi + ebp]
add edx, 8
and edx, 0xfffffff8
lea edi, [ebx + edx]
cmp esi, edi
jae 0x513e64
add edx, esi
cmp dword [esp + 0x58], edx
jae 0x513e64
mov eax, esi
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x6c]
mov edi, dword [esp + 0x58]
movsd xmm0, qword [edi]
movsd qword [eax], xmm0
add eax, 8
add edi, 8
cmp eax, ecx
jb 0x513dbd
mov edi, dword [esp + 0x40]
mov eax, edi
sub eax, edx
mov word [ecx], ax
add ecx, 2
lea edx, [ebp - 4]
mov al, byte [ebx]
cmp edx, 0xf
jb 0x513e55
add al, 0xf
mov byte [ebx], al
lea eax, [ebp - 0x13]
cmp eax, 0x1fe
jb 0x513e36
lea eax, [ebp - 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
add esp, 0xc
mov eax, dword [esp + 8]
lea eax, [eax + edi*2]
lea ecx, [esi + eax]
add ecx, 4
imul eax, edi, 0xfffffe02
add eax, ebp
add eax, 0xfffffdef
cmp eax, 0xff
mov esi, dword [esp + 0x40]
jb 0x513e4c
add eax, 0xffffff01
mov byte [ecx], 0xff
add ecx, 1
mov byte [ecx], al
add ecx, 1
add esi, ebp
jmp 0x513e5d
add al, dl
mov byte [ebx], al
add edi, ebp
mov esi, edi
mov ebx, ecx
jmp 0x5136b5
shr eax, 3
add eax, 1
mov edx, eax
and edx, 0xfffffffc
mov dword [esp], edx
add edx, 0xfffffffc
mov ebx, edx
shr ebx, 2
add ebx, 1
test edx, edx
je 0x513efd
mov edx, ebx
and edx, 0xfffffffe
xor edi, edi
mov ebp, dword [esp + 0x58]
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 0x513e8c
jmp 0x513eff
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov dword [esp + 0xc], ebp
jmp 0x513bb9
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
jmp 0x513eed
mov eax, dword [esp + 0x54]
jmp 0x513bad
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov ebx, dword [esp + 0x7c]
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xc], eax
jmp 0x513bb9
xor edi, edi
test bl, 1
je 0x513f1a
mov edx, dword [esp + 0x58]
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]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 4]
je 0x513dcf
mov edx, dword [esp]
lea eax, [eax + edx*8]
mov dword [esp + 0x58], eax
lea eax, [esi + edx*8]
jmp 0x513db5