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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x11c
mov eax, edx
mov esi, ecx
mov edi, dword [esp + 0x140]
mov ecx, dword [esp + 0x13c]
mov dword [esp + 8], ecx
mov edx, dword [esi + 0x40000]
mov dword [esp], edx
sub edx, dword [esi + 0x40004]
mov ecx, dword [esi + 0x4000c]
sub ecx, dword [esi + 0x40010]
add ecx, edx
mov ebp, dword [esp + 0x138]
mov edx, dword [esp + 0x134]
mov ebx, dword [esp + 0x130]
cmp ecx, 0x10000
jb 0x4930e2
mov dword [esi + 0x4001c], 0
mov ecx, esi
mov esi, edx
mov edx, eax
push edi
push dword [esp + 0xc]
push ebp
push esi
push ebx
call fcn.0048ca70
add esp, 0x130
jmp 0x49a379
mov dword [esp + 0xe8], ebx
mov dword [esp + 0x78], ebp
mov dword [esp + 0x9c], edi
test ecx, ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0xc8], eax
jne 0x49314b
cmp dword [edx], 0x1001
jl 0x49314b
mov esi, eax
push 0x40020
mov ebp, dword [esp + 0x24]
push dword [ebp + 0x4001c]
push ebp
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov edx, dword [ebp + 0x40000]
mov ebx, dword [ebp + 0x40004]
lea ecx, [ebx + 4]
cmp edx, ecx
jae 0x493327
mov ecx, dword [ebp + 0x4000c]
mov eax, dword [esp + 8]
jmp 0x496b59
xor edi, edi
cmp dword [esp + 0x78], 0
jg 0x493162
cmp dword [esp + 0x9c], 2
je 0x49a371
mov ebx, dword [edx]
cmp ebx, 0x7e000000
ja 0x49a371
mov dword [esp + 0xfc], edx
mov eax, dword [esp]
add eax, ebx
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x40000], eax
mov edx, dword [esp + 8]
cmp edx, 0xc
mov eax, 0xc
cmovl eax, edx
test edx, edx
mov edx, 9
cmovg edx, eax
mov dword [esp + 0xf8], edx
lea eax, [edx*4]
mov edx, dword [eax + eax*2 + 0x6b7568]
cmp dword [eax + eax*2 + 0x6b7564], 0
mov dword [esp + 0x40], edx
je 0x49339b
lea eax, [eax + eax*2]
add eax, 0x6b7564
movzx ecx, byte [ecx + 0x4001a]
xor edi, edi
mov byte [esp + 0x60], cl
neg cl
mov ecx, 0
sbb ecx, ecx
mov dword [esp + 0x98], ecx
mov esi, dword [eax + 8]
push 0x10030
call sub.msvcrt.dll_malloc
add esp, 4
mov dword [esp + 0x68], eax
test eax, eax
je 0x49a356
mov ecx, dword [esp + 0xc8]
lea eax, [ecx + ebx]
mov dword [esp + 0x104], eax
lea eax, [ecx + ebx]
add eax, 0xfffffff4
mov dword [esp + 0xbc], eax
xor eax, eax
cmp dword [esp + 0x9c], 2
setne al
mov edx, dword [esp + 0xe8]
mov ebp, dword [esp + 0x78]
add ebp, edx
mov edi, dword [esp + 0xfc]
mov dword [edi], 0
lea eax, [eax + eax*4]
cmp esi, 0xfff
mov edi, 0xfff
cmovb edi, esi
mov dword [esp + 0x108], edi
mov dword [esp + 0x78], ebp
lea eax, [eax + ebp - 5]
mov dword [esp + 0xe0], eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0xac], edx
cmp dword [esp + 0xbc], ecx
jae 0x496ba5
xor ecx, ecx
mov esi, dword [esp + 0x9c]
cmp esi, 2
sete bl
mov edi, dword [esp + 0x104]
mov ebp, dword [esp + 0x90]
sub edi, ebp
lea eax, [edi + 0xf0]
mov edx, 0x80808081
mul edx
test esi, esi
je 0x49a182
shr edx, 7
add edx, edi
mov cl, bl
lea eax, [ecx + ecx*4]
mov esi, dword [esp + 0xe0]
add esi, eax
mov eax, dword [esp + 0xac]
add eax, edx
inc eax
cmp eax, esi
mov ebx, dword [esp + 0xc8]
jbe 0x49a189
mov edi, 0
cmp dword [esp + 0x9c], 1
je 0x49a356
mov ecx, esi
mov eax, dword [esp + 0xac]
not eax
lea edi, [eax + esi]
add eax, esi
add eax, 0xf1
shr eax, 8
sub edi, eax
mov ebp, dword [esp + 0x90]
jmp 0x49a189
mov eax, dword [ebp + 0x4000c]
mov edi, dword [ebp + 0x40014]
mov ecx, edx
sub ecx, ebx
mov esi, ebx
lea ebx, [ecx + eax]
add ebx, 0xfffffffd
mov ecx, eax
cmp edi, ebx
jae 0x496b34
mov dword [esp], edx
mov dword [esp + 4], esi
mov dword [esp + 0x10], ecx
sub esi, ecx
jmp 0x49337c
movzx eax, di
mov ebp, dword [esp + 0x20]
mov word [ebp + eax*2 + 0x20000], cx
mov dword [ebp + edx*4], edi
inc edi
cmp edi, ebx
jae 0x496b43
imul edx, dword [esi + edi], 0x9e3779b1
shr edx, 0x11
mov ecx, edi
sub ecx, dword [ebp + edx*4]
cmp ecx, 0xffff
jb 0x493360
mov ecx, 0xffff
jmp 0x493360
xor eax, eax
cmp dword [esp + 0x9c], 2
setne al
mov ecx, dword [esp + 0xc8]
lea edx, [ecx + ebx]
mov dword [esp + 0xe0], edx
mov edx, dword [esp + 0xe8]
mov edi, dword [esp + 0x78]
add edi, edx
mov esi, dword [esp + 0xfc]
mov dword [esi], 0
lea eax, [eax + eax*4]
mov dword [esp + 0x78], edi
add eax, edi
add eax, 0xfffffffb
mov dword [esp + 0xb4], eax
mov esi, edx
cmp ebx, 0xd
jb 0x49a096
mov eax, dword [esp + 0xc8]
lea edx, [eax + ebx]
add edx, 0xfffffff4
mov ecx, eax
mov esi, dword [esp + 0xe8]
mov dword [esp + 0xac], edx
cmp edx, eax
jb 0x49a096
mov eax, dword [esp + 0xc8]
lea ecx, [eax + ebx]
add ecx, 0xfffffffb
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0xe0]
lea edx, [ecx - 8]
mov dword [esp + 8], edx
add ecx, 0xfffffffa
mov dword [esp + 0xd0], ecx
lea ecx, [ebx + eax - 5]
mov dword [esp + 0xd8], ecx
mov dword [esp + 0x8c], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x50], 0
xor edi, edi
mov edx, dword [esp + 0xe8]
mov dword [esp + 0xa0], edi
mov dword [esp + 0x84], edx
mov ecx, eax
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx + 0x40004]
mov dword [esp + 0x54], eax
mov edx, dword [ebx + 0x40008]
mov esi, dword [ebx + 0x4000c]
mov edi, dword [ebx + 0x40010]
mov ebp, esi
sub ebp, edi
sub eax, esi
mov dword [esp + 0x28], eax
mov eax, edx
sub eax, edi
mov dword [esp + 0x90], eax
mov eax, 0xfffffffc
sub eax, ecx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x4001c]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x44], edi
lea eax, [edi + 0x10000]
mov dword [esp + 0x80], eax
mov eax, edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x64], ebp
lea eax, [edx + ebp]
mov dword [esp + 0x70], eax
lea eax, [esi - 4]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x54]
lea eax, [eax + 4]
mov dword [esp + 0xa8], eax
mov eax, dword [ebx + 0x40014]
lea edx, [esi + ecx]
mov dword [esp + 0x60], esi
lea esi, [esi + ecx - 1]
mov dword [esp + 0xc0], esi
lea esi, [ecx + 4]
mov dword [esp + 0x68], esi
mov dword [esp + 0x98], edx
mov dword [esp + 0x74], edx
mov dword [esp + 0xcc], 0
mov dword [esp + 0xb8], ecx
mov ebp, ecx
nop word cs:[eax + eax]
mov ecx, ebp
sub ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x60]
lea esi, [ecx + edx]
cmp dword [esp + 0x80], esi
lea ecx, [ecx + edx - 0xffff]
cmova ecx, dword [esp + 0x44]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp]
mov dword [esp + 0x2c], ecx
cmp eax, esi
mov dword [esp + 0x48], esi
jae 0x4935fc
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0xcc]
add edx, ecx
mov ecx, dword [esp + 0x54]
add ecx, eax
sub edx, ecx
test dl, 1
je 0x4935e0
mov edx, dword [esp + 0x28]
imul edx, dword [edx + eax], 0x9e3779b1
shr edx, 0x11
mov esi, eax
sub esi, dword [ebx + edx*4]
cmp esi, 0xffff
mov edi, 0xffff
cmovae esi, edi
movzx edi, ax
mov word [ebx + edi*2 + 0x20000], si
mov dword [ebx + edx*4], eax
inc eax
mov edx, dword [esp + 0xc0]
mov esi, dword [esp + 0xcc]
add edx, esi
cmp edx, ecx
mov esi, dword [esp + 0x48]
jne 0x493e70
mov dword [ebx + 0x40014], esi
mov edx, dword [esp + 0x2c]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
xor edx, eax
lea eax, [ebp + 4]
mov dword [esp + 0x34], eax
or edx, ecx
lea eax, [ebp + 8]
mov dword [esp + 0xb0], eax
sete byte [esp + 0x94]
mov dword [esp + 4], 3
mov edx, dword [esp + 0x40]
test edx, edx
mov dword [esp + 0x38], ebp
jle 0x493ef4
imul eax, dword [ebp], 0x9e3779b1
shr eax, 0x11
mov ebx, dword [ebx + eax*4]
mov ecx, dword [esp + 0x1c]
cmp ebx, ecx
jb 0x493f0b
mov dword [esp + 0x30], 0
mov dword [esp + 4], 3
mov eax, edx
mov dword [esp], edx
xor esi, esi
mov ebp, dword [esp + 0x34]
nop
mov edi, dword [esp + 0x60]
sub edi, ebx
mov dword [esp + 0xc], edi
jbe 0x4936f0
cmp ebx, dword [esp + 0x4c]
ja 0x493920
mov eax, edx
mov edx, ebx
sub edx, dword [esp + 0x44]
add edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
cmp dword [edx], ecx
jne 0x493750
mov eax, dword [esp + 0x38]
lea ecx, [eax + edi]
mov eax, dword [esp + 0x14]
cmp ecx, eax
mov dword [esp + 0x10], ecx
cmova ecx, eax
lea eax, [edx + 4]
mov dword [esp + 0x18], ecx
add ecx, 0xfffffffd
cmp ecx, ebp
jbe 0x493e19
mov ebp, dword [ebp]
xor ebp, dword [eax]
je 0x493757
tzcnt edx, ebp
shr edx, 3
jmp 0x4937b4
mov eax, dword [esp + 0x28]
lea edi, [eax + ebx]
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x38]
movzx eax, word [eax + ecx - 1]
cmp ax, word [ecx + edi - 1]
jne 0x493920
mov eax, dword [esp + 0x2c]
cmp dword [edi], eax
jne 0x493920
mov ecx, edx
lea edx, [edi + 4]
cmp dword [esp + 8], ebp
jbe 0x493e28
mov eax, dword [ebp]
xor eax, dword [edx]
je 0x493801
tzcnt eax, eax
shr eax, 3
mov edx, ecx
add eax, 4
cmp eax, dword [esp + 4]
jg 0x493909
jmp 0x493920
mov edx, eax
jmp 0x493920
add edx, 8
mov eax, edx
mov edx, dword [esp + 0xb0]
cmp edx, ecx
jae 0x493783
mov edi, dword [esp + 0x6c]
lea ebp, [edi + edx]
nop
mov edi, dword [edx]
xor edi, dword [eax]
jne 0x4937ab
add edx, 4
add eax, 4
add ebp, 4
cmp edx, ecx
jb 0x493770
mov ecx, dword [esp + 0x18]
dec ecx
cmp edx, ecx
jae 0x493d78
movzx ecx, word [eax]
cmp cx, word [edx]
mov ebp, dword [esp + 0x34]
jne 0x493d7c
add edx, 2
add eax, 2
jmp 0x493d7c
tzcnt edx, edi
shr edx, 3
add edx, ebp
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
lea eax, [edx + 4]
cmp ecx, dword [esp + 0x14]
jae 0x4938f8
mov ecx, dword [esp + 0x38]
add ecx, edx
add ecx, 4
mov edx, dword [esp + 0x18]
cmp ecx, edx
jne 0x4938f8
mov ecx, edx
mov ebp, dword [esp + 0x54]
mov edi, ebp
cmp dword [esp + 8], edx
jbe 0x49386b
mov edx, ecx
mov ecx, dword [ecx]
xor ecx, dword [ebp]
je 0x493861
tzcnt edx, ecx
shr edx, 3
jmp 0x4938f2
lea edx, [edi + 8]
mov eax, dword [esp + 0xb0]
cmp eax, dword [esp + 8]
jae 0x493839
mov ecx, dword [esp + 0x6c]
add ecx, eax
nop word [eax + eax]
mov ebp, dword [eax]
xor ebp, dword [edx]
jne 0x4938cd
add eax, 4
add edx, 4
add ecx, 4
cmp eax, dword [esp + 8]
jb 0x493820
cmp eax, dword [esp + 0xd0]
jae 0x493da8
movzx ecx, word [edx]
cmp cx, word [eax]
mov ebp, dword [esp + 0x40]
jne 0x493dac
add eax, 2
add edx, 2
jmp 0x493dac
add edx, 4
mov edi, dword [esp + 0xa8]
cmp edx, dword [esp + 8]
jae 0x4938a5
mov ebp, dword [esp + 0x74]
sub ebp, ebx
mov ecx, dword [esp + 0xd8]
cmp ecx, ebp
cmovb ebp, ecx
mov ecx, edx
sub ecx, ebp
nop word [eax + eax]
mov ebp, dword [edx]
xor ebp, dword [edi]
jne 0x4938e9
add edx, 4
add edi, 4
add ecx, 4
cmp edx, dword [esp + 8]
jb 0x493890
cmp edx, dword [esp + 0xd0]
jae 0x493dd8
movzx ecx, word [edi]
cmp cx, word [edx]
mov ebp, dword [esp + 0x34]
jne 0x493ddc
add edx, 2
add edi, 2
jmp 0x493ddc
tzcnt eax, ebp
shr eax, 3
add eax, ecx
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x34]
add eax, 4
cmp eax, dword [esp + 4]
jg 0x493909
jmp 0x493920
tzcnt edx, ebp
shr edx, 3
add edx, ecx
mov ebp, dword [esp + 0x34]
add eax, edx
cmp eax, dword [esp + 4]
mov edx, dword [esp + 0x40]
jle 0x493920
mov ecx, dword [esp + 0x28]
lea edi, [ecx + ebx]
mov dword [esp + 0x24], edi
mov dword [esp + 4], eax
nop word cs:[eax + eax]
mov eax, dword [esp]
dec eax
mov dword [esp + 0x10], eax
movzx eax, bx
mov ecx, dword [esp + 0x20]
movzx edi, word [ecx + eax*2 + 0x20000]
cmp edx, 0x81
jl 0x493a20
cmp di, 1
mov ecx, dword [esp + 0x1c]
jne 0x493ae0
cmp dword [esp + 0x30], 0
je 0x493a29
cmp dword [esp + 0x30], 2
jne 0x493ae0
lea eax, [ebx - 1]
cmp eax, ecx
jb 0x493ae0
mov dword [esp + 0x30], 2
cmp dword [esp + 0xc], 3
jb 0x493ae0
mov ecx, dword [esp + 0x60]
cmp eax, ecx
mov edx, dword [esp + 0x28]
cmovb edx, dword [esp + 0x90]
mov ebp, dword [esp + 0x2c]
cmp dword [edx + eax], ebp
jne 0x493ac7
lea edi, [edx + eax]
mov dword [esp + 0x30], eax
cmp eax, ecx
mov eax, dword [esp + 0x14]
cmovb eax, dword [esp + 0x70]
mov dword [esp + 0xc], edi
add edi, 4
mov dword [esp + 0x18], eax
lea ebp, [eax - 3]
mov ecx, edi
cmp ebp, edi
mov eax, dword [esp + 0x2c]
jbe 0x4939f4
add ebx, edx
add ebx, 3
mov ecx, edi
nop word cs:[eax + eax]
mov edx, dword [ecx]
xor edx, eax
jne 0x493b05
add ecx, 4
add ebx, 4
cmp ecx, ebp
jb 0x4939e0
mov edx, dword [esp + 0x18]
cmp ecx, edx
jae 0x493b0e
mov ebp, edx
sub ebp, ecx
mov ebx, eax
cmp byte [ecx], bl
jne 0x493b0e
inc ecx
shr ebx, 8
dec ebp
jne 0x493a06
mov ecx, edx
jmp 0x493b0e
mov ecx, dword [esp + 0x1c]
jmp 0x493ae0
mov dword [esp + 0x30], 1
cmp byte [esp + 0x94], 0
je 0x493ae0
mov eax, ebp
mov ebp, edx
mov esi, dword [esp + 0x68]
mov edx, eax
cmp dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
jbe 0x493e39
nop word [eax + eax]
mov ecx, dword [edx]
xor ecx, eax
jne 0x493a9a
add edx, 4
add esi, 4
cmp edx, dword [esp + 8]
jb 0x493a60
mov eax, dword [esp + 0x14]
cmp edx, eax
jae 0x493aa3
mov ebp, eax
sub ebp, esi
lea esi, [edx + ebp]
mov ecx, dword [esp + 0x2c]
cmp byte [edx], cl
jne 0x493a92
inc edx
shr ecx, 8
dec ebp
jne 0x493a85
mov edx, esi
mov esi, edx
mov edx, dword [esp + 0x40]
jmp 0x493aa5
tzcnt eax, ecx
shr eax, 3
add esi, eax
mov edx, ebp
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x34]
sub esi, ebp
add esi, 4
mov dword [esp + 0x30], 2
cmp dword [esp + 0x30], 2
je 0x493967
jmp 0x493ae0
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x34]
nop word cs:[eax + eax]
movzx eax, di
sub ebx, eax
mov edi, dword [esp + 0x10]
cmp ebx, ecx
jb 0x493f0d
cmp dword [esp], 1
mov eax, edi
mov dword [esp], edi
jg 0x493680
jmp 0x493f0d
tzcnt ecx, edx
shr ecx, 3
add ecx, ebx
sub ecx, edi
lea edx, [ecx + 4]
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x60]
mov dword [esp + 0x18], edx
jae 0x493b37
mov eax, dword [esp + 0xc]
add eax, edx
cmp eax, dword [esp + 0x70]
je 0x493cd9
mov ecx, dword [esp + 0x3c]
jmp 0x493b3b
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0xa4], eax
lea edx, [ecx + 4]
mov ebx, dword [esp + 0xc]
nop word cs:[eax + eax]
mov edi, ebx
cmp ebx, edx
jb 0x493b6e
lea ebx, [edi - 4]
cmp dword [edi - 4], eax
je 0x493b60
cmp edi, ecx
jbe 0x493e50
lea edx, [esp + 0xa7]
mov ebx, dword [esp + 0x60]
nop word cs:[eax + eax]
movzx eax, byte [edi - 1]
cmp al, byte [edx]
jne 0x493ba0
dec edi
dec edx
cmp edi, ecx
ja 0x493b90
mov edi, ecx
mov ecx, dword [esp + 0xc]
mov edx, ecx
sub edx, edi
cmp dword [esp + 0x30], ebx
mov eax, dword [esp + 0x1c]
jb 0x493c2e
sub ecx, edx
cmp ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x10]
jne 0x493c32
cmp ebx, dword [esp + 0x44]
jbe 0x493c32
mov ecx, edx
neg ecx
shl ecx, 3
mov ebx, dword [esp + 0x2c]
rol ebx, cl
mov dword [esp + 0xa4], ebx
mov edi, dword [esp + 0x64]
nop dword [eax]
cmp edi, 4
jl 0x493e05
lea ecx, [edi - 4]
mov eax, dword [esp + 0x3c]
cmp dword [eax + edi - 4], ebx
mov edi, ecx
je 0x493be0
mov eax, dword [esp + 0x3c]
add ecx, eax
add ecx, 4
lea edi, [esp + 0xa7]
nop dword [eax + eax]
movzx eax, byte [ecx - 1]
cmp al, byte [edi]
jne 0x493c24
dec ecx
dec edi
cmp ecx, dword [esp + 0x3c]
ja 0x493c10
mov ecx, dword [esp + 0x3c]
add edx, dword [esp + 0x70]
sub edx, ecx
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov ebx, ecx
sub ebx, edx
cmp ebx, eax
cmovbe ebx, eax
mov eax, ecx
sub ecx, ebx
mov edx, dword [esp + 0x18]
add ecx, edx
cmp edx, esi
ja 0x493c7c
cmp ecx, esi
jb 0x493c7c
sub eax, esi
add edx, eax
mov eax, edx
not eax
mov ecx, dword [esp + 0x60]
add eax, ecx
cmp eax, 3
cmovb edx, ecx
mov dword [esp + 0x30], 2
mov ebx, edx
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x1c]
jmp 0x493ae9
mov eax, ebx
not eax
mov edi, dword [esp + 0x60]
add eax, edi
mov dword [esp + 0x30], 2
cmp eax, 3
mov edx, dword [esp + 0x40]
jae 0x493ca2
mov ebx, edi
mov ecx, dword [esp + 0x1c]
jmp 0x493ae5
cmp ecx, esi
cmovae ecx, esi
cmp dword [esp + 4], ecx
jae 0x493d54
mov eax, dword [esp + 0x48]
sub eax, ebx
cmp eax, 0xffff
mov edi, dword [esp + 0x10]
ja 0x4940f9
mov eax, dword [esp + 0x28]
add eax, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 4], ecx
jmp 0x493d58
shl ecx, 3
mov eax, dword [esp + 0x2c]
mov edx, eax
rol edx, cl
mov ecx, dword [esp + 0x54]
cmp dword [esp + 8], ecx
jbe 0x493e59
mov edi, ecx
mov ebp, dword [esp + 0x34]
nop dword [eax + eax]
mov ebx, dword [ecx]
xor ebx, edx
jne 0x493d30
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 8]
jb 0x493d00
mov ebx, dword [esp + 0x14]
cmp ecx, ebx
jae 0x493d3d
sub ebx, edi
lea edi, [ecx + ebx]
cmp byte [ecx], dl
jne 0x493d2c
inc ecx
shr edx, 8
dec ebx
jne 0x493d1f
mov ecx, edi
mov edi, ecx
jmp 0x493d3d
tzcnt eax, ebx
shr eax, 3
add edi, eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x54]
add ecx, edi
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x3c]
jmp 0x493b43
mov edi, dword [esp + 0x10]
movzx eax, bx
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + eax*2 + 0x20000]
sub ebx, eax
mov ecx, dword [esp + 0x1c]
jae 0x493ae9
jmp 0x493f0d
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
cmp edx, ecx
jae 0x493d90
movzx eax, byte [eax]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov ecx, dword [esp + 0x10]
sub edx, ebp
lea eax, [edx + 4]
cmp ecx, dword [esp + 0x14]
jb 0x4937c9
jmp 0x4938f8
mov ebp, dword [esp + 0x40]
cmp eax, dword [esp + 0x14]
jae 0x493dbe
movzx ecx, byte [edx]
xor edx, edx
cmp cl, byte [eax]
sete dl
add eax, edx
mov edx, ebp
mov ebp, dword [esp + 0x34]
sub eax, ebp
add eax, 4
cmp eax, dword [esp + 4]
jg 0x493909
jmp 0x493920
mov ebp, dword [esp + 0x34]
cmp edx, dword [esp + 0x14]
jae 0x493dfa
movzx ecx, byte [edi]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0x10]
cmp cl, byte [edx]
mov ecx, 0
sete cl
add edx, ecx
mov ecx, dword [esp + 0x18]
sub edx, ecx
jmp 0x4938f6
mov eax, dword [esp + 0x3c]
lea ecx, [eax + edi]
test edi, edi
jg 0x493c01
jmp 0x493c24
mov edx, ebp
cmp edx, ecx
jb 0x493767
jmp 0x493783
mov eax, ebp
cmp eax, dword [esp + 8]
jb 0x493811
jmp 0x493839
mov edx, dword [esp + 0x34]
mov esi, edx
mov eax, dword [esp + 0x14]
cmp edx, eax
jb 0x493a7a
jmp 0x493aa3
mov ebx, dword [esp + 0x60]
jmp 0x493ba0
mov edi, ecx
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x14]
cmp ecx, ebx
jb 0x493d1a
jmp 0x493d3d
inc eax
jmp 0x493ea0
movzx esi, ax
mov word [ebx + esi*2 + 0x20000], dx
mov dword [ebx + ecx*4], eax
lea ecx, [eax + 2]
inc eax
mov esi, dword [esp + 0x48]
cmp eax, esi
mov eax, ecx
jae 0x4935fc
lea ecx, [eax - 1]
mov edx, dword [esp + 0x28]
imul edx, dword [edx + eax - 1], 0x9e3779b1
shr edx, 0x11
mov esi, ecx
sub esi, dword [ebx + edx*4]
cmp esi, 0xffff
jb 0x493ec4
mov esi, 0xffff
movzx edi, cx
mov word [ebx + edi*2 + 0x20000], si
mov dword [ebx + edx*4], ecx
mov ecx, dword [esp + 0x28]
imul ecx, dword [ecx + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebx + ecx*4]
cmp edx, 0xffff
jb 0x493e80
mov edx, 0xffff
jmp 0x493e80
mov edi, edx
mov ecx, dword [esp + 0x1c]
test edi, edi
jg 0x493f11
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x48]
jmp 0x4940c4
mov edi, edx
test edi, edi
jle 0x493efe
mov esi, dword [esp + 0x48]
mov eax, esi
sub eax, ecx
cmp eax, 0xfffe
ja 0x4940c0
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x5c]
mov ebp, dword [esi + 0x40000]
mov eax, dword [esi + 0x40004]
mov dword [esp], eax
sub ebp, eax
mov ebx, ecx
mov ecx, dword [esi + 0x4000c]
mov eax, dword [esp + 0x38]
imul eax, dword [eax], 0x9e3779b1
add ebp, ecx
shr eax, 0x11
mov edi, dword [esi + eax*4]
mov esi, dword [esp + 0x48]
add ebx, edi
mov dword [esp + 0x30], ebp
sub ebx, ebp
mov eax, esi
sub eax, ebx
cmp eax, 0xffff
ja 0x4940c0
mov ebp, ebx
mov eax, dword [esp]
sub eax, ecx
mov ebx, dword [esp + 4]
mov ecx, eax
mov dword [esp], eax
jmp 0x493fb9
mov ebp, dword [esp + 0x1c]
movzx eax, di
mov ecx, dword [esp + 0x5c]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edi, eax
sub ebp, eax
mov eax, esi
sub eax, ebp
cmp eax, 0x10000
mov ecx, dword [esp]
jae 0x4940c4
sub dword [esp + 0x10], 1
jb 0x4940c4
mov dword [esp + 0x1c], ebp
mov eax, dword [esp + 0x2c]
cmp dword [ecx + edi], eax
jne 0x493f90
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x30]
sub ebx, edi
add ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
cmp ebx, eax
cmova ebx, eax
lea edx, [ecx + edi]
lea ebp, [edx + 4]
lea ecx, [ebx - 3]
mov eax, dword [esp + 0x34]
cmp ecx, eax
jbe 0x4940a8
mov esi, dword [eax]
xor esi, dword [ebp]
je 0x49400d
tzcnt edx, esi
shr edx, 3
jmp 0x49407e
add edx, 8
mov ebp, edx
mov edx, dword [esp + 0xb0]
cmp edx, ecx
jae 0x494044
mov eax, dword [esp + 0x6c]
lea esi, [eax + edx]
nop word cs:[eax + eax]
mov eax, dword [edx]
xor eax, dword [ebp]
jne 0x494075
add edx, 4
add ebp, 4
add esi, 4
cmp edx, ecx
jb 0x494030
lea eax, [ebx - 1]
cmp edx, eax
jae 0x49405a
movzx eax, word [ebp]
cmp ax, word [edx]
jne 0x49405a
add edx, 2
add ebp, 2
cmp edx, ebx
jae 0x49406b
movzx eax, byte [ebp]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov ebx, dword [esp + 4]
sub edx, dword [esp + 0x34]
jmp 0x494082
tzcnt edx, eax
shr edx, 3
add edx, esi
mov ebx, dword [esp + 4]
add edx, 4
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
add eax, ebp
cmp edx, ebx
mov esi, dword [esp + 0x24]
cmovg esi, eax
mov dword [esp + 0x24], esi
cmovg ebx, edx
mov esi, dword [esp + 0x48]
jmp 0x493f94
mov edx, eax
cmp edx, ecx
jb 0x49401d
jmp 0x494044
mov ebx, dword [esp + 4]
cmp ebx, 4
jge 0x49410a
mov ebp, dword [esp + 0x38]
inc ebp
inc dword [esp + 0xcc]
dec dword [esp + 0x6c]
inc dword [esp + 0x74]
inc dword [esp + 0x68]
mov eax, esi
cmp ebp, dword [esp + 0xac]
mov ebx, dword [esp + 0x20]
jbe 0x493560
jmp 0x49a088
mov ecx, dword [esp + 0x1c]
test edi, edi
jg 0x493f11
jmp 0x493efe
mov ebp, ebx
mov edx, dword [esp + 0x24]
mov dword [esp + 0xdc], edx
mov eax, dword [esp + 0x38]
mov dword [esp + 0xd4], eax
mov dword [esp + 0x98], ebx
mov ebx, dword [esp + 0x20]
mov edi, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x38], eax
nop word [eax + eax]
mov eax, ebp
mov ebp, edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x44], edi
lea edx, [edi + eax]
cmp edx, dword [esp + 0xac]
mov dword [esp + 0xa0], ebp
mov dword [esp + 0x70], edx
ja 0x496465
lea eax, [edx - 2]
mov ecx, dword [ebx + 0x40004]
mov edi, dword [ebx + 0x4000c]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x94], ecx
sub eax, ecx
lea esi, [eax + edi]
mov ebp, dword [ebx + 0x40010]
lea ecx, [ebp + 0x10000]
cmp ecx, esi
lea eax, [eax + edi - 0xffff]
mov dword [esp + 0x5c], ebp
cmova eax, ebp
mov dword [esp + 0x3c], eax
mov dword [esp + 0x34], edi
neg edi
mov dword [esp + 4], edi
mov eax, dword [edx - 2]
mov dword [esp + 0x30], eax
mov ecx, dword [ebx + 0x40014]
cmp ecx, esi
mov dword [esp + 0x48], esi
jae 0x494220
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 4]
add edx, eax
jmp 0x4941fa
movzx ebx, cx
mov word [ebp + ebx*2 + 0x20000], di
mov ebx, ebp
mov dword [ebp + esi*4], ecx
inc ecx
mov esi, dword [esp + 0x48]
cmp ecx, esi
jae 0x494220
imul esi, dword [edx + ecx], 0x9e3779b1
shr esi, 0x11
mov edi, ecx
mov ebp, ebx
sub edi, dword [ebx + esi*4]
cmp edi, 0xffff
jb 0x4941e0
mov edi, 0xffff
jmp 0x4941e0
mov eax, dword [ebx + 0x4001c]
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0x40008]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x4c], eax
mov dword [ebx + 0x40014], esi
mov eax, dword [esp + 0x30]
movzx ecx, ax
mov edx, eax
shr edx, 0x10
xor edx, ecx
movzx ecx, al
mov esi, eax
shr esi, 0x18
xor esi, ecx
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 4]
add eax, ecx
mov dword [esp + 0x18], eax
or esi, edx
mov ecx, dword [esp + 0x70]
lea eax, [ecx + 2]
mov dword [esp + 0x54], eax
lea eax, [ecx + 6]
mov dword [esp + 0x68], eax
sete byte [esp + 0xcc]
mov edx, dword [esp + 0x40]
test edx, edx
jle 0x494c9b
imul ecx, dword [ecx - 2], 0x9e3779b1
shr ecx, 0x11
mov eax, dword [ebx + ecx*4]
mov esi, dword [esp + 0x3c]
cmp eax, esi
mov edi, dword [esp + 0x74]
jb 0x494cae
mov dword [esp], eax
mov ecx, dword [esp + 0x5c]
mov eax, ecx
neg eax
mov esi, dword [esp + 0x34]
sub esi, ecx
mov ebp, dword [esp + 0xc]
mov dword [esp + 0x88], esi
add esi, ebp
mov dword [esp + 0x64], esi
add eax, ebp
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 4]
mov esi, dword [esp + 0x94]
add eax, esi
dec eax
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x44]
add eax, edi
mov esi, 0xfffffffe
sub esi, eax
mov dword [esp + 0x80], esi
mov esi, dword [esp + 0x34]
add eax, esi
add eax, 0xfffffffe
mov dword [esp + 0xe4], eax
not ecx
add ecx, ebp
mov dword [esp + 0x90], ecx
lea eax, [esi - 4]
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x94]
add eax, 4
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x44]
lea eax, [edi + eax - 3]
mov dword [esp + 0x10], eax
mov dword [esp + 0x60], 0
mov ebp, edi
mov eax, edx
mov dword [esp + 0xa8], 0
nop word cs:[eax + eax]
mov dword [esp + 0x1c], eax
mov edi, dword [esp + 0x34]
mov eax, dword [esp]
sub edi, eax
mov dword [esp + 0x24], edi
jbe 0x4943f0
cmp eax, dword [esp + 0xb0]
ja 0x494770
mov esi, eax
mov eax, edx
sub esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0xc]
lea edx, [ecx + esi]
mov ecx, dword [esp + 0x30]
cmp dword [edx], ecx
jne 0x4944a0
mov eax, dword [esp + 0x2c]
add edi, eax
mov eax, dword [esp + 0x14]
cmp edi, eax
mov dword [esp + 0x28], edi
cmova edi, eax
lea ecx, [edx + 4]
mov dword [esp + 0x6c], edi
lea ebx, [edi - 3]
mov eax, dword [esp + 0x54]
cmp ebx, eax
mov dword [esp + 4], ebp
jbe 0x494c74
mov edi, dword [eax]
xor edi, dword [ecx]
je 0x4944a7
tzcnt edx, edi
shr edx, 3
jmp 0x494508
mov esi, eax
mov eax, edx
mov ecx, dword [esp + 0x18]
add esi, ecx
mov ecx, dword [esp + 0x44]
movzx ecx, word [ecx + ebp - 1]
mov edx, dword [esp + 0x4c]
add edx, esi
cmp cx, word [ebp + edx - 1]
jne 0x4944a0
mov ecx, dword [esp + 0x30]
cmp dword [esi], ecx
jne 0x4944a0
mov ecx, dword [esp + 0x2c]
cmp ecx, dword [esp + 0x44]
mov dword [esp + 4], ebp
je 0x49456d
mov ecx, dword [esp + 0x94]
sub ecx, esi
mov eax, dword [esp + 0x4c]
cmp eax, ecx
cmovg ecx, eax
mov edi, ecx
sar edi, 0x1f
and edi, ecx
mov eax, dword [esp + 0xc4]
mov edx, dword [esp]
add edx, eax
xor ebx, ebx
nop dword [eax]
cmp ebx, ecx
jle 0x494479
lea ebp, [ebx - 1]
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + ebx]
cmp al, byte [edx + ebx]
mov ebx, ebp
je 0x494460
inc ebp
mov edi, ebp
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x40]
mov ebp, dword [esp + 4]
lea edx, [esi + 4]
mov ecx, dword [esp + 0x54]
cmp dword [esp + 8], ecx
ja 0x49457c
jmp 0x4945a4
mov edx, eax
jmp 0x494770
add edx, 8
mov ecx, edx
mov edx, dword [esp + 0x68]
cmp edx, ebx
jae 0x4944d3
mov eax, dword [esp + 0x80]
lea ebp, [eax + edx]
nop
mov edi, dword [edx]
xor edi, dword [ecx]
jne 0x4944ff
add edx, 4
add ecx, 4
add ebp, 4
cmp edx, ebx
jb 0x4944c0
mov eax, dword [esp + 0x6c]
dec eax
cmp edx, eax
jae 0x4946ba
movzx eax, word [ecx]
cmp ax, word [edx]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
jne 0x4946c2
add edx, 2
add ecx, 2
jmp 0x4946c2
tzcnt edx, edi
shr edx, 3
add edx, ebp
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
lea ecx, [edx + 4]
cmp ebx, edi
jae 0x4946e3
mov eax, dword [esp + 0x2c]
add eax, edx
add eax, 4
mov edi, dword [esp + 0x6c]
cmp eax, edi
jne 0x4946e3
mov eax, dword [esp + 0x94]
mov ebp, eax
mov edx, edi
cmp dword [esp + 8], edi
jbe 0x49460f
mov edx, dword [edi]
xor edx, dword [eax]
je 0x494605
tzcnt edx, edx
shr edx, 3
mov eax, dword [esp + 0x44]
add ecx, edx
cmp dword [esp + 0x2c], eax
jne 0x4946f1
xor edi, edi
jmp 0x494739
xor edi, edi
lea edx, [esi + 4]
mov ecx, dword [esp + 0x54]
cmp dword [esp + 8], ecx
jbe 0x4945a4
mov ecx, dword [ecx]
xor ecx, dword [edx]
je 0x49459d
tzcnt ecx, ecx
shr ecx, 3
mov edx, eax
sub ecx, edi
add ecx, 4
cmp ecx, ebp
jg 0x494695
jmp 0x494770
lea edx, [esi + 8]
mov ecx, dword [esp + 0x68]
cmp ecx, dword [esp + 8]
jae 0x4945d9
mov eax, dword [esp + 0x80]
lea ebx, [eax + ecx]
nop word cs:[eax + eax]
mov ebp, dword [ecx]
xor ebp, dword [edx]
jne 0x494673
add ecx, 4
add edx, 4
add ebx, 4
cmp ecx, dword [esp + 8]
jb 0x4945c0
cmp ecx, dword [esp + 0xd0]
jae 0x494bef
movzx eax, word [edx]
cmp ax, word [ecx]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 4]
jne 0x494bf7
add ecx, 2
add edx, 2
jmp 0x494bf7
lea edx, [edi + 4]
mov ebp, dword [esp + 0xf8]
cmp edx, dword [esp + 8]
jae 0x494646
mov eax, dword [esp + 0xe4]
sub eax, dword [esp]
mov edi, dword [esp + 0xd8]
cmp eax, edi
cmovae eax, edi
mov ebx, edx
sub ebx, eax
nop
mov edi, dword [edx]
xor edi, dword [ebp]
jne 0x4946a0
add edx, 4
add ebp, 4
add ebx, 4
cmp edx, dword [esp + 8]
jb 0x494630
cmp edx, dword [esp + 0xd0]
jae 0x494c2c
movzx eax, word [ebp]
cmp ax, word [edx]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x6c]
jne 0x494c34
add edx, 2
add ebp, 2
jmp 0x494c34
tzcnt ecx, ebp
shr ecx, 3
add ecx, ebx
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 4]
sub ecx, edi
add ecx, 4
cmp ecx, ebp
jle 0x494770
add esi, edi
mov dword [esp + 0x58], esi
jmp 0x49475a
tzcnt edx, edi
shr edx, 3
add edx, ebx
mov eax, dword [esp + 0x44]
add ecx, edx
cmp dword [esp + 0x2c], eax
jne 0x4946f1
jmp 0x494566
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
cmp edx, dword [esp + 0x6c]
jae 0x4946d4
movzx eax, byte [ecx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
sub edx, dword [esp + 0x54]
lea ecx, [edx + 4]
cmp ebx, edi
jb 0x49451b
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x2c], eax
je 0x494566
neg esi
mov eax, dword [esp + 0x4c]
cmp eax, esi
cmovg esi, eax
mov edi, esi
sar edi, 0x1f
and edi, esi
mov eax, dword [esp + 0x90]
mov edx, dword [esp]
add edx, eax
xor ebx, ebx
nop word cs:[eax + eax]
cmp ebx, esi
jle 0x494739
lea ebp, [ebx - 1]
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + ebx]
cmp al, byte [edx + ebx]
mov ebx, ebp
je 0x494720
inc ebp
mov edi, ebp
sub ecx, edi
mov ebp, dword [esp + 4]
cmp ecx, ebp
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
jle 0x494770
mov eax, dword [esp + 0x18]
mov esi, dword [esp]
add eax, esi
add eax, edi
mov dword [esp + 0x58], eax
add edi, dword [esp + 0x2c]
mov dword [esp + 0x38], edi
mov ebp, ecx
nop word cs:[eax + eax]
mov edi, dword [esp + 0x1c]
lea eax, [edi - 1]
mov dword [esp + 0x28], eax
movzx eax, word [esp]
movzx ecx, word [ebx + eax*2 + 0x20000]
cmp edx, 0x81
jl 0x494870
cmp cx, 1
mov esi, dword [esp + 0x3c]
jne 0x494926
cmp dword [esp + 0x60], 0
mov eax, dword [esp + 0x30]
je 0x494879
mov ebx, ebp
cmp dword [esp + 0x60], 2
jne 0x494920
mov ebp, dword [esp]
dec ebp
mov dword [esp + 0x6c], ebp
cmp ebp, esi
jb 0x494920
mov dword [esp + 0x60], 2
cmp dword [esp + 0x24], 3
mov ebp, ebx
jb 0x494922
mov dword [esp + 4], ebp
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x6c]
cmp ebx, edx
mov ebp, dword [esp + 0x18]
cmovb ebp, dword [esp + 0xc0]
cmp dword [ebp + ebx], eax
jne 0x49494f
lea ecx, [ebx + ebp]
cmp ebx, edx
mov ebx, dword [esp + 0x14]
cmovb ebx, dword [esp + 0x64]
mov dword [esp + 0x60], ecx
lea edx, [ecx + 4]
lea esi, [ebx - 3]
mov ecx, edx
cmp esi, edx
jbe 0x494844
mov ecx, dword [esp]
lea edi, [ecx + ebp]
add edi, 3
mov ecx, edx
nop
mov ebp, dword [ecx]
xor ebp, eax
jne 0x49495d
add ecx, 4
add edi, 4
cmp ecx, esi
jb 0x494830
cmp ecx, ebx
jae 0x494966
mov ebp, ebx
mov esi, ebx
sub esi, ecx
mov edi, eax
mov ebx, edi
cmp byte [ecx], bl
jne 0x494966
inc ecx
shr edi, 8
dec esi
jne 0x494854
mov ecx, ebp
jmp 0x494966
mov esi, dword [esp + 0x3c]
jmp 0x494926
mov dword [esp + 0x60], 1
cmp byte [esp + 0xcc], 0
je 0x494926
mov edi, dword [esp + 0x54]
cmp dword [esp + 8], edi
mov eax, dword [esp + 0x30]
mov edx, edi
jbe 0x4948b2
nop
mov esi, dword [edi]
xor esi, eax
jne 0x4948d8
add edi, 4
add edx, 4
cmp edi, dword [esp + 8]
jb 0x4948a0
mov esi, dword [esp + 0x14]
cmp edi, esi
jae 0x4948e5
sub esi, edx
lea edx, [edi + esi]
cmp byte [edi], al
jne 0x4948cc
inc edi
shr eax, 8
dec esi
jne 0x4948bf
mov edi, edx
mov edx, edi
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
jmp 0x4948e9
tzcnt eax, esi
shr eax, 3
add edx, eax
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x3c]
mov ebx, ebp
sub edx, dword [esp + 0x54]
add edx, 4
mov dword [esp + 0xa8], edx
mov dword [esp + 0x60], 2
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x1c]
cmp dword [esp + 0x60], 2
je 0x4947bd
nop word cs:[eax + eax]
mov ebp, ebx
mov ebx, dword [esp + 0x20]
movzx eax, cx
mov ecx, dword [esp]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x28]
cmp eax, esi
jb 0x494cb2
mov dword [esp], eax
cmp edi, 1
mov eax, ecx
jg 0x494370
jmp 0x494cb2
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 4]
jmp 0x494926
tzcnt ecx, ebp
shr ecx, 3
add ecx, edi
sub ecx, edx
lea ebp, [ecx + 4]
mov ebx, dword [esp + 0x34]
cmp dword [esp + 0x6c], ebx
jae 0x49498f
mov eax, dword [esp + 0x60]
add eax, ebp
cmp eax, dword [esp + 0x64]
mov eax, dword [esp + 0x14]
je 0x494998
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x30]
jmp 0x494a0a
mov ecx, dword [esp + 0x94]
jmp 0x494a0a
shl ecx, 3
mov edx, dword [esp + 0x30]
rol edx, cl
mov ecx, dword [esp + 0x94]
cmp dword [esp + 8], ecx
jbe 0x494c8c
mov edi, ecx
nop word cs:[eax + eax]
mov esi, dword [ecx]
xor esi, edx
jne 0x4949ee
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 8]
jb 0x4949c0
cmp ecx, eax
jae 0x4949f7
mov esi, eax
sub esi, edi
lea edi, [ecx + esi]
cmp byte [ecx], dl
jne 0x4949ea
inc ecx
shr edx, 8
dec esi
jne 0x4949dd
mov ecx, edi
mov edi, ecx
jmp 0x4949f7
tzcnt eax, esi
shr eax, 3
add edi, eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x94]
sub ebp, ecx
add ebp, edi
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xa4], eax
lea edx, [ecx + 4]
mov esi, dword [esp + 0x60]
nop dword [eax + eax]
mov edi, esi
cmp esi, edx
jb 0x494a2e
lea esi, [edi - 4]
cmp dword [edi - 4], eax
je 0x494a20
cmp edi, ecx
jbe 0x494c83
lea edx, [esp + 0xa7]
mov esi, dword [esp + 0x3c]
nop word cs:[eax + eax]
movzx eax, byte [edi - 1]
cmp al, byte [edx]
jne 0x494a60
dec edi
dec edx
cmp edi, ecx
ja 0x494a50
mov edi, ecx
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
mov edx, ecx
sub edx, edi
cmp dword [esp + 0x6c], ebx
jae 0x494a7b
mov edi, dword [esp + 0x1c]
jmp 0x494afe
sub ecx, edx
cmp ecx, dword [esp + 0x94]
mov edi, dword [esp + 0x1c]
jne 0x494afe
cmp ebx, dword [esp + 0x5c]
jbe 0x494afe
mov ecx, edx
neg ecx
shl ecx, 3
mov ebx, eax
rol ebx, cl
mov dword [esp + 0xa4], ebx
mov esi, dword [esp + 0x88]
nop dword [eax]
cmp esi, 4
jl 0x494c5c
lea ecx, [esi - 4]
mov eax, dword [esp + 0xc]
cmp dword [eax + esi - 4], ebx
mov esi, ecx
je 0x494ab0
mov eax, dword [esp + 0xc]
add ecx, eax
add ecx, 4
mov ebx, dword [esp + 0x34]
lea esi, [esp + 0xa7]
nop dword [eax]
movzx eax, byte [ecx - 1]
cmp al, byte [esi]
jne 0x494af4
dec ecx
dec esi
cmp ecx, dword [esp + 0xc]
ja 0x494ae0
mov ecx, dword [esp + 0xc]
add edx, dword [esp + 0x64]
sub edx, ecx
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x6c]
mov eax, ecx
sub eax, edx
cmp eax, esi
cmovbe eax, esi
mov dword [esp], eax
sub ecx, eax
add ecx, ebp
mov eax, dword [esp + 0xa8]
cmp ebp, eax
ja 0x494b50
cmp ecx, eax
jb 0x494b50
mov ecx, dword [esp + 0x6c]
sub ecx, eax
add ebp, ecx
mov eax, ebp
not eax
add eax, ebx
cmp eax, 3
cmovb ebp, ebx
mov dword [esp + 0x60], 2
mov eax, ebp
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 4]
jmp 0x494930
mov eax, dword [esp]
not eax
add eax, ebx
mov dword [esp + 0x60], 2
cmp eax, 3
mov ebp, dword [esp + 4]
jae 0x494b77
mov eax, ebx
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
jmp 0x494930
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
je 0x494b95
mov ecx, dword [esp + 0x28]
mov eax, dword [esp]
jmp 0x494934
mov eax, dword [esp + 0xa8]
cmp ecx, eax
cmovae ecx, eax
cmp ebp, ecx
jae 0x494bce
mov eax, dword [esp + 0x48]
sub eax, dword [esp]
cmp eax, 0xffff
ja 0x494f2d
mov eax, dword [esp + 0x18]
mov ebp, dword [esp]
add eax, ebp
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], eax
mov ebp, ecx
mov ecx, dword [esp]
movzx eax, cx
movzx eax, word [ebx + eax*2 + 0x20000]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x28]
jae 0x494934
jmp 0x494cb2
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 4]
cmp ecx, dword [esp + 0x14]
jae 0x494c12
movzx edx, byte [edx]
mov byte [esp + 0x28], dl
xor edx, edx
movzx eax, byte [esp + 0x28]
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0x40]
sub ecx, dword [esp + 0x54]
sub ecx, edi
add ecx, 4
cmp ecx, ebp
jg 0x494695
jmp 0x494770
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x6c]
cmp edx, eax
jae 0x494c45
movzx eax, byte [ebp]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov eax, dword [esp + 0x44]
sub edx, edi
add ecx, edx
cmp dword [esp + 0x2c], eax
jne 0x4946f1
jmp 0x494566
mov eax, dword [esp + 0xc]
lea ecx, [eax + esi]
test esi, esi
mov ebx, dword [esp + 0x34]
jg 0x494ad5
jmp 0x494af4
mov edx, eax
cmp edx, ebx
jb 0x4944b4
jmp 0x4944d3
mov esi, dword [esp + 0x3c]
jmp 0x494a64
mov edi, ecx
cmp ecx, eax
jb 0x4949d6
jmp 0x4949f7
mov ecx, edx
mov ebp, dword [esp + 0x74]
mov esi, dword [esp + 0x3c]
test ecx, ecx
jg 0x494cba
jmp 0x494f39
mov ecx, edx
mov ebp, edi
test ecx, ecx
jle 0x494f39
mov eax, dword [esp + 0x48]
sub eax, esi
cmp eax, 0xfffe
ja 0x494f39
mov edi, esi
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x50]
mov esi, dword [eax + 0x40000]
mov ecx, dword [eax + 0x40004]
mov dword [esp + 0xc], ecx
sub esi, ecx
mov ecx, dword [eax + 0x4000c]
mov dword [esp], ecx
mov ecx, dword [esp + 0x2c]
imul ecx, dword [ecx], 0x9e3779b1
add esi, dword [esp]
shr ecx, 0x11
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x10], eax
add edi, eax
mov dword [esp + 0x34], esi
sub edi, esi
mov ecx, dword [esp + 0x48]
sub ecx, edi
cmp ecx, 0xffff
ja 0x494f39
mov dword [esp + 4], ebp
mov ebp, dword [esp + 0xc]
sub ebp, dword [esp]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x3c], edi
mov esi, dword [esp + 0x44]
mov eax, 0xfffffffe
sub eax, esi
sub eax, ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x1c], ebp
lea eax, [ebp - 1]
mov dword [esp + 0x5c], eax
mov ebp, dword [esp + 4]
lea eax, [esi + ecx - 3]
mov dword [esp], eax
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x24], eax
mov edi, dword [esp + 0x10]
jmp 0x494d9c
mov ebp, dword [esp + 4]
mov edi, dword [esp + 0x10]
movzx eax, di
mov ecx, dword [esp + 0x50]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edi, eax
sub esi, eax
mov eax, dword [esp + 0x48]
sub eax, esi
cmp eax, 0x10000
jae 0x494f41
mov eax, dword [esp + 0x28]
sub eax, 1
jb 0x494f41
mov dword [esp + 4], ebp
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov ebp, dword [esp + 0x1c]
cmp dword [ebp + edi], eax
mov dword [esp + 0x10], edi
jne 0x494d70
mov eax, dword [esp + 0x34]
sub eax, edi
add eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
cmova eax, ecx
lea ecx, [ebp + edi]
mov dword [esp + 0x60], ecx
lea ebx, [ecx + 4]
lea edx, [eax - 3]
mov ecx, dword [esp + 0x54]
cmp edx, ecx
jbe 0x494e6d
mov ecx, dword [ecx]
xor ecx, dword [ebx]
mov ebp, dword [esp + 4]
je 0x494e62
tzcnt ecx, ecx
shr ecx, 3
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x44]
je 0x494ed1
mov dword [esp + 0x3c], esi
mov ebp, edx
sub ebp, dword [esp + 0x60]
mov eax, dword [esp + 0x4c]
cmp eax, ebp
cmovg ebp, eax
mov edi, ebp
sar edi, 0x1f
and edi, ebp
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x5c]
lea esi, [edx + eax]
xor ebx, ebx
nop word [eax + eax]
cmp ebx, ebp
jle 0x494e58
lea eax, [ebx - 1]
mov edx, dword [esp]
movzx edx, byte [edx + ebx]
cmp dl, byte [esi + ebx]
mov ebx, eax
je 0x494e40
inc eax
mov edi, eax
mov ebp, dword [esp + 4]
mov esi, dword [esp + 0x3c]
jmp 0x494ed3
mov ecx, dword [esp + 0x60]
lea ebx, [ecx + 8]
mov ecx, dword [esp + 0x68]
mov edi, esi
cmp ecx, edx
jae 0x494e93
mov esi, dword [esp + 0x6c]
add esi, ecx
nop dword [eax]
mov ebp, dword [ecx]
xor ebp, dword [ebx]
jne 0x494eb0
add ecx, 4
add ebx, 4
add esi, 4
cmp ecx, edx
jb 0x494e80
lea edx, [eax - 1]
cmp ecx, edx
jae 0x494eff
movzx edx, word [ebx]
cmp dx, word [ecx]
mov esi, edi
jne 0x494eaa
add ecx, 2
add ebx, 2
mov ebp, dword [esp + 4]
jmp 0x494f05
tzcnt ecx, ebp
shr ecx, 3
add ecx, esi
mov ebp, dword [esp + 4]
mov esi, edi
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x44]
jne 0x494e13
xor edi, edi
add ecx, 4
sub ecx, edi
cmp ecx, ebp
mov ebx, dword [esp + 0x20]
jle 0x494d74
mov eax, dword [esp + 0x18]
add eax, esi
add eax, edi
mov dword [esp + 0x24], eax
add edi, dword [esp + 0x2c]
mov dword [esp + 0x38], edi
mov ebp, ecx
jmp 0x494d74
mov ebp, dword [esp + 4]
mov esi, edi
cmp ecx, eax
jae 0x494f15
movzx eax, byte [ebx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0xc]
sub ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x44]
jne 0x494e13
jmp 0x494ed1
mov ecx, dword [esp + 0x28]
test ecx, ecx
jg 0x494cba
mov eax, dword [esp + 0x58]
mov dword [esp + 0x24], eax
cmp ebp, dword [esp + 0x74]
je 0x49646f
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0xd4]
cmp edi, esi
setb cl
mov eax, dword [esp + 0x98]
add eax, esi
mov edx, dword [esp + 0x38]
cmp edx, eax
setb al
and al, cl
cmovne esi, edi
mov ecx, edx
sub ecx, esi
mov edi, edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x58], edx
cmp ecx, 3
jl 0x494140
mov dword [esp + 0x64], esi
test al, al
mov eax, dword [esp + 0xa0]
cmovne eax, dword [esp + 0xdc]
mov dword [esp + 0xa0], eax
mov edx, dword [esp + 0x74]
cmovne edx, dword [esp + 0x98]
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x7c], eax
mov ecx, dword [esp + 0x78]
cmp edx, 0x12
mov eax, 0x12
cmovl eax, edx
mov esi, dword [esp + 0x64]
mov dword [esp + 0x88], eax
add eax, esi
mov dword [esp + 0xf0], eax
lea eax, [esi + edx]
mov dword [esp + 0xb8], eax
mov dword [esp + 0x74], edx
lea eax, [esi + edx]
add eax, 3
mov dword [esp + 0xd4], eax
mov edx, dword [esp + 0x38]
mov eax, edx
mov esi, dword [esp + 0x64]
sub eax, esi
cmp eax, 0x11
jg 0x49503c
lea ecx, [edx + ebp]
add ecx, 0xfffffffc
cmp dword [esp + 0xf0], ecx
lea ecx, [eax + ebp - 4]
cmovbe ecx, dword [esp + 0x88]
mov eax, esi
sub eax, edx
add eax, ecx
test eax, eax
jle 0x495048
add edx, eax
mov ecx, dword [esp + 0x24]
add ecx, eax
sub ebp, eax
mov eax, edx
jmp 0x49504e
mov eax, edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x58], edx
jmp 0x495056
mov eax, edx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x98], ebp
lea edx, [eax + ebp]
cmp edx, dword [esp + 0xac]
mov dword [esp + 0x70], edx
ja 0x4966b2
mov dword [esp + 0x50], eax
lea eax, [edx - 3]
mov ecx, dword [ebx + 0x40004]
mov edi, dword [ebx + 0x4000c]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x6c], ecx
sub eax, ecx
lea esi, [eax + edi]
mov ebp, dword [ebx + 0x40010]
lea ecx, [ebp + 0x10000]
cmp ecx, esi
lea eax, [eax + edi - 0xffff]
mov dword [esp + 0x24], ebp
cmova eax, ebp
mov dword [esp + 0x2c], eax
mov dword [esp + 0x48], edi
neg edi
mov dword [esp], edi
mov eax, dword [edx - 3]
mov dword [esp + 0x30], eax
mov ecx, dword [ebx + 0x40014]
cmp ecx, esi
mov dword [esp + 0xc], esi
jae 0x49511a
mov eax, dword [esp + 0x6c]
mov edx, dword [esp]
add edx, eax
jmp 0x4950fa
movzx ebx, cx
mov word [ebp + ebx*2 + 0x20000], di
mov ebx, ebp
mov dword [ebp + esi*4], ecx
inc ecx
mov esi, dword [esp + 0xc]
cmp ecx, esi
jae 0x49511a
imul esi, dword [edx + ecx], 0x9e3779b1
shr esi, 0x11
mov edi, ecx
mov ebp, ebx
sub edi, dword [ebx + esi*4]
cmp edi, 0xffff
jb 0x4950e0
mov edi, 0xffff
jmp 0x4950e0
mov eax, dword [ebx + 0x4001c]
mov dword [esp + 0xb0], eax
mov eax, dword [ebx + 0x40008]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov dword [ebx + 0x40014], esi
mov eax, dword [esp + 0x30]
movzx ecx, ax
mov edx, eax
shr edx, 0x10
xor edx, ecx
movzx ecx, al
mov esi, eax
shr esi, 0x18
xor esi, ecx
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp]
add eax, ecx
mov dword [esp + 0x4c], eax
or esi, edx
mov ecx, dword [esp + 0x70]
lea eax, [ecx + 1]
mov dword [esp + 0x18], eax
lea eax, [ecx + 5]
mov dword [esp + 0x94], eax
sete byte [esp + 0x68]
mov edx, dword [esp + 0x40]
test edx, edx
jle 0x495b94
imul ecx, dword [ecx - 3], 0x9e3779b1
shr ecx, 0x11
mov eax, dword [ebx + ecx*4]
mov esi, dword [esp + 0x2c]
cmp eax, esi
mov ebp, dword [esp + 0x98]
jb 0x495ba5
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov ebp, eax
neg ebp
mov edi, dword [esp + 0x48]
mov ecx, edi
sub ecx, eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0xdc], ecx
add ecx, eax
mov dword [esp + 0xc0], ecx
add ebp, eax
mov dword [esp + 0xa8], ebp
mov ecx, dword [esp]
mov ebp, dword [esp + 0x6c]
add ecx, ebp
dec ecx
mov dword [esp + 0xc4], ecx
mov ecx, dword [esp + 0x98]
mov ebp, dword [esp + 0x50]
add ecx, ebp
lea ebp, [edi + ecx - 3]
mov dword [esp + 0xe4], ebp
not ecx
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x24]
not ecx
add ecx, eax
mov dword [esp + 0xcc], ecx
lea eax, [edi - 4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x6c]
add eax, 4
mov dword [esp + 0xf8], eax
mov ebp, dword [esp + 0x98]
mov eax, dword [esp + 0x50]
lea eax, [ebp + eax - 4]
mov dword [esp], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x28], edx
mov dword [esp + 0x80], 0
mov edx, dword [esp + 0x10]
sub edi, edx
mov dword [esp + 0x34], edi
jbe 0x4952f0
cmp edx, dword [esp + 0x54]
ja 0x49566a
mov eax, dword [esp + 0x40]
mov esi, edx
sub esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x60]
lea edx, [ecx + esi]
mov ecx, dword [esp + 0x30]
cmp dword [edx], ecx
jne 0x4953b0
mov eax, dword [esp + 0x3c]
add edi, eax
mov eax, dword [esp + 0x14]
cmp edi, eax
mov dword [esp + 0x1c], edi
cmova edi, eax
lea ecx, [edx + 4]
mov dword [esp + 0x5c], edi
lea ebx, [edi - 3]
mov eax, dword [esp + 0x18]
cmp ebx, eax
mov dword [esp + 4], ebp
jbe 0x495b5a
mov edi, dword [eax]
xor edi, dword [ecx]
je 0x4953bb
tzcnt edx, edi
shr edx, 3
mov edi, dword [esp + 0x14]
lea ecx, [edx + 4]
cmp dword [esp + 0x1c], edi
jb 0x495435
jmp 0x4955e6
mov eax, dword [esp + 0x4c]
lea ecx, [eax + edx]
mov eax, dword [esp + 0x50]
movzx esi, word [eax + ebp - 1]
mov eax, dword [esp + 0x44]
lea edx, [ecx + eax]
cmp si, word [ebp + edx - 1]
jne 0x4953a0
mov eax, dword [esp + 0x30]
cmp dword [ecx], eax
mov esi, dword [esp + 0x40]
jne 0x4953b2
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x50]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
mov dword [esp + 4], ebp
je 0x495472
mov eax, ecx
mov ecx, dword [esp + 0x6c]
sub ecx, eax
mov eax, dword [esp + 0x44]
cmp eax, ecx
cmovg ecx, eax
mov edi, ecx
sar edi, 0x1f
and edi, ecx
mov eax, dword [esp + 0xc4]
add edx, eax
xor ebx, ebx
nop
cmp ebx, ecx
jle 0x495378
lea ebp, [ebx - 1]
mov eax, dword [esp]
movzx eax, byte [eax + ebx]
cmp al, byte [edx + ebx]
mov ebx, ebp
je 0x495360
inc ebp
mov edi, ebp
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + 4]
mov ecx, dword [esp + 0x18]
cmp dword [esp + 8], ecx
ja 0x495481
jmp 0x4954a1
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
jmp 0x495670
mov esi, eax
mov edx, dword [esp + 0x10]
jmp 0x495670
add edx, 8
mov ecx, edx
mov edx, dword [esp + 0x94]
cmp edx, ebx
jae 0x4953f3
mov eax, dword [esp + 0x90]
lea ebp, [eax + edx]
nop word cs:[eax + eax]
mov edi, dword [edx]
xor edi, dword [ecx]
jne 0x49541b
add edx, 4
add ecx, 4
add ebp, 4
cmp edx, ebx
jb 0x4953e0
mov eax, dword [esp + 0x5c]
dec eax
cmp edx, eax
jae 0x4955bf
movzx eax, word [ecx]
cmp ax, word [edx]
mov edi, dword [esp + 0x14]
jne 0x4955c3
add edx, 2
add ecx, 2
jmp 0x4955c3
tzcnt edx, edi
shr edx, 3
add edx, ebp
mov edi, dword [esp + 0x14]
lea ecx, [edx + 4]
cmp dword [esp + 0x1c], edi
jae 0x4955e6
mov eax, dword [esp + 0x3c]
add eax, edx
add eax, 4
mov edi, dword [esp + 0x5c]
cmp eax, edi
jne 0x4955e6
mov eax, dword [esp + 0x6c]
mov ebp, eax
mov edx, edi
cmp dword [esp + 8], edi
jbe 0x49550f
mov edx, dword [edi]
xor edx, dword [eax]
je 0x495505
tzcnt edx, edx
shr edx, 3
jmp 0x4955ab
xor edi, edi
lea edx, [ecx + 4]
mov ecx, dword [esp + 0x18]
cmp dword [esp + 8], ecx
jbe 0x4954a1
mov ecx, dword [ecx]
xor ecx, dword [edx]
je 0x495493
tzcnt ecx, ecx
shr ecx, 3
jmp 0x495584
mov eax, dword [esp + 0x1c]
lea edx, [eax + 8]
mov ecx, dword [esp + 0x94]
cmp ecx, dword [esp + 8]
jae 0x4954d9
mov eax, dword [esp + 0x90]
lea ebx, [eax + ecx]
nop word cs:[eax + eax]
mov ebp, dword [ecx]
xor ebp, dword [edx]
jne 0x495573
add ecx, 4
add edx, 4
add ebx, 4
cmp ecx, dword [esp + 8]
jb 0x4954c0
cmp ecx, dword [esp + 0xd0]
jae 0x495ae7
movzx eax, word [edx]
cmp ax, word [ecx]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 4]
jne 0x495aef
add ecx, 2
add edx, 2
jmp 0x495aef
lea edx, [edi + 4]
mov ebp, dword [esp + 0xf8]
cmp edx, dword [esp + 8]
jae 0x495546
mov eax, dword [esp + 0xe4]
sub eax, dword [esp + 0x10]
mov edi, dword [esp + 0xd8]
cmp eax, edi
cmovae eax, edi
mov ebx, edx
sub ebx, eax
mov edi, dword [edx]
xor edi, dword [ebp]
jne 0x4955a2
add edx, 4
add ebp, 4
add ebx, 4
cmp edx, dword [esp + 8]
jb 0x495530
cmp edx, dword [esp + 0xd0]
jae 0x495b0e
movzx eax, word [ebp]
cmp ax, word [edx]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x5c]
jne 0x495b16
add edx, 2
add ebp, 2
jmp 0x495b16
tzcnt ecx, ebp
shr ecx, 3
add ecx, ebx
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 4]
mov edx, dword [esp + 0x10]
sub ecx, edi
add ecx, 4
cmp ecx, ebp
mov esi, dword [esp + 0x40]
jle 0x495670
mov eax, dword [esp + 0x1c]
jmp 0x495654
tzcnt edx, edi
shr edx, 3
add edx, ebx
mov eax, dword [esp + 0x50]
add ecx, edx
cmp dword [esp + 0x3c], eax
mov edx, dword [esp + 0x10]
jne 0x4955f4
xor edi, edi
jmp 0x49563c
mov edi, dword [esp + 0x14]
cmp edx, dword [esp + 0x5c]
jae 0x4955d5
movzx eax, byte [ecx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
sub edx, dword [esp + 0x18]
lea ecx, [edx + 4]
cmp dword [esp + 0x1c], edi
jb 0x495435
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x3c], eax
mov edx, dword [esp + 0x10]
je 0x4955bb
neg esi
mov eax, dword [esp + 0x44]
cmp eax, esi
cmovg esi, eax
mov edi, esi
sar edi, 0x1f
and edi, esi
mov eax, dword [esp + 0xcc]
add edx, eax
xor ebx, ebx
nop word cs:[eax + eax]
cmp ebx, esi
jle 0x495638
lea ebp, [ebx - 1]
mov eax, dword [esp]
movzx eax, byte [eax + ebx]
cmp al, byte [edx + ebx]
mov ebx, ebp
je 0x495620
inc ebp
mov edi, ebp
mov edx, dword [esp + 0x10]
sub ecx, edi
mov ebp, dword [esp + 4]
cmp ecx, ebp
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x40]
jle 0x495670
mov eax, dword [esp + 0x4c]
add eax, edx
add eax, edi
mov dword [esp + 0x8c], eax
add edi, dword [esp + 0x3c]
mov dword [esp + 0xbc], edi
mov ebp, ecx
mov esi, dword [esp + 0x40]
nop
mov eax, dword [esp + 0x28]
dec eax
mov dword [esp + 0x1c], eax
movzx eax, dx
movzx ecx, word [ebx + eax*2 + 0x20000]
cmp esi, 0x81
jl 0x495790
cmp cx, 1
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x2c]
jne 0x495854
cmp dword [esp + 0x38], 0
je 0x49579d
mov dword [esp + 4], ebp
cmp dword [esp + 0x38], 2
mov eax, dword [esp + 0x30]
jne 0x495850
mov ebp, edi
mov edi, esi
lea esi, [edx - 1]
mov dword [esp + 0x5c], esi
cmp esi, edi
mov esi, edi
jb 0x495808
mov dword [esp + 0x38], 2
cmp dword [esp + 0x34], 3
mov edi, ebp
jb 0x495850
mov ebx, dword [esp + 0x5c]
cmp ebx, edi
mov ebp, dword [esp + 0x4c]
cmovb ebp, dword [esp + 0xa8]
cmp dword [ebp + ebx], eax
jne 0x49584c
lea ecx, [ebx + ebp]
cmp ebx, edi
mov ebx, dword [esp + 0x14]
cmovb ebx, dword [esp + 0xc0]
mov dword [esp + 0x38], ecx
lea edx, [ecx + 4]
lea esi, [ebx - 3]
mov ecx, edx
cmp esi, edx
jbe 0x495754
mov ecx, dword [esp + 0x10]
lea edi, [ecx + ebp]
add edi, 3
mov ecx, edx
nop word cs:[eax + eax]
mov ebp, dword [ecx]
xor ebp, eax
jne 0x495883
add ecx, 4
add edi, 4
cmp ecx, esi
jb 0x495740
cmp ecx, ebx
mov edi, dword [esp + 0x48]
jae 0x495890
mov dword [esp + 0x10], ebx
mov esi, ebx
sub esi, ecx
mov ebp, eax
mov ebx, ebp
cmp byte [ecx], bl
jne 0x495890
inc ecx
shr ebp, 8
dec esi
jne 0x49576a
mov ecx, dword [esp + 0x10]
jmp 0x495890
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x2c]
jmp 0x495854
mov dword [esp + 0x38], 1
cmp byte [esp + 0x68], 0
je 0x495854
mov edi, dword [esp + 0x18]
cmp dword [esp + 8], edi
jbe 0x495b69
mov edx, edi
mov eax, dword [esp + 0x30]
nop word cs:[eax + eax]
mov esi, dword [edi]
xor esi, eax
jne 0x49580c
add edi, 4
add edx, 4
cmp edi, dword [esp + 8]
jb 0x4957d0
mov esi, dword [esp + 0x14]
cmp edi, esi
jae 0x495815
mov eax, ebx
sub esi, edx
lea edx, [edi + esi]
mov ebx, dword [esp + 0x30]
cmp byte [edi], bl
jne 0x495802
inc edi
shr ebx, 8
dec esi
jne 0x4957f5
mov edi, edx
mov edx, edi
mov ebx, eax
jmp 0x495815
mov edi, ebp
jmp 0x495850
tzcnt eax, esi
shr eax, 3
add edx, eax
mov esi, dword [esp + 0x2c]
mov dword [esp + 4], ebp
sub edx, dword [esp + 0x18]
add edx, 4
mov dword [esp + 0x80], edx
mov dword [esp + 0x38], 2
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x38], 2
mov eax, dword [esp + 0x30]
je 0x4956c0
jmp 0x495850
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 4]
movzx eax, cx
sub edx, eax
mov ecx, dword [esp + 0x78]
cmp edx, esi
jb 0x495baf
mov dword [esp + 0x10], edx
cmp dword [esp + 0x28], 1
mov edx, dword [esp + 0x1c]
mov eax, edx
mov dword [esp + 0x28], edx
jg 0x495260
jmp 0x495bb3
tzcnt ecx, ebp
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0x48]
sub ecx, edx
lea ebp, [ecx + 4]
mov ebx, dword [esp + 0x5c]
cmp ebx, edi
jae 0x4958ba
mov eax, dword [esp + 0x38]
add eax, ebp
cmp eax, dword [esp + 0xc0]
mov eax, dword [esp + 0x14]
je 0x4958c0
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x30]
jmp 0x49592d
mov ecx, dword [esp + 0x6c]
jmp 0x49592d
shl ecx, 3
mov edx, dword [esp + 0x30]
rol edx, cl
mov ecx, dword [esp + 0x6c]
cmp dword [esp + 8], ecx
jbe 0x495b85
mov edi, ecx
nop dword [eax]
mov esi, dword [ecx]
xor esi, edx
jne 0x495916
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 8]
jb 0x4958e0
cmp ecx, eax
jae 0x49591f
mov esi, eax
sub esi, edi
lea edi, [ecx + esi]
cmp byte [ecx], dl
jne 0x49590a
inc ecx
shr edx, 8
dec esi
jne 0x4958fd
mov ecx, edi
mov edi, ecx
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x5c]
jmp 0x495923
tzcnt eax, esi
shr eax, 3
add edi, eax
mov eax, dword [esp + 0x30]
sub ebp, dword [esp + 0x6c]
add ebp, edi
mov ecx, dword [esp + 0x60]
mov dword [esp + 0xa4], eax
lea edx, [ecx + 4]
mov esi, dword [esp + 0x38]
nop dword [eax + eax]
mov edi, esi
cmp esi, edx
jb 0x49594e
lea esi, [edi - 4]
cmp dword [edi - 4], eax
je 0x495940
cmp edi, ecx
jbe 0x495b7c
lea edx, [esp + 0xa7]
mov esi, dword [esp + 0x2c]
nop word cs:[eax + eax]
movzx eax, byte [edi - 1]
cmp al, byte [edx]
jne 0x495980
dec edi
dec edx
cmp edi, ecx
ja 0x495970
mov edi, ecx
mov eax, dword [esp + 0x38]
mov edx, eax
sub edx, edi
mov edi, dword [esp + 0x48]
cmp ebx, edi
mov ebx, dword [esp + 0x30]
jae 0x49599a
mov ebx, dword [esp + 0x5c]
jmp 0x495a11
sub eax, edx
cmp eax, dword [esp + 0x6c]
jne 0x495994
cmp edi, dword [esp + 0x24]
jbe 0x495994
mov ecx, edx
neg ecx
shl ecx, 3
rol ebx, cl
mov dword [esp + 0xa4], ebx
mov esi, dword [esp + 0xdc]
nop
cmp esi, 4
jl 0x495b42
lea ecx, [esi - 4]
mov eax, dword [esp + 0x60]
cmp dword [eax + esi - 4], ebx
mov esi, ecx
je 0x4959c0
mov eax, dword [esp + 0x60]
add ecx, eax
add ecx, 4
mov ebx, dword [esp + 0x5c]
lea esi, [esp + 0xa7]
nop dword [eax]
movzx eax, byte [ecx - 1]
cmp al, byte [esi]
jne 0x495a04
dec ecx
dec esi
cmp ecx, dword [esp + 0x60]
ja 0x4959f0
mov ecx, dword [esp + 0x60]
add edx, dword [esp + 0xc0]
sub edx, ecx
mov esi, dword [esp + 0x2c]
mov eax, ebx
sub eax, edx
mov edx, eax
cmp eax, esi
cmovbe edx, esi
mov ecx, ebx
sub ecx, edx
add ecx, ebp
mov eax, dword [esp + 0x80]
cmp ebp, eax
ja 0x495a5c
cmp ecx, eax
jb 0x495a5c
sub ebx, eax
add ebp, ebx
mov eax, ebp
not eax
add eax, edi
cmp eax, 3
cmovb ebp, edi
mov dword [esp + 0x38], 2
mov edx, ebp
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x78]
mov ebp, dword [esp + 4]
jmp 0x49585d
mov eax, edx
not eax
add eax, edi
mov dword [esp + 0x38], 2
cmp eax, 3
mov ebp, dword [esp + 4]
jae 0x495a7e
mov edx, edi
mov ebx, dword [esp + 0x20]
jmp 0x495859
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x20]
jne 0x495859
mov eax, dword [esp + 0x80]
cmp ecx, eax
cmovae ecx, eax
cmp ebp, ecx
jae 0x495acb
mov eax, dword [esp + 0xc]
sub eax, edx
cmp eax, 0xffff
ja 0x495bab
mov eax, dword [esp + 0x4c]
add eax, edx
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0xbc], eax
mov ebp, ecx
mov ecx, dword [esp + 0x78]
movzx eax, dx
movzx eax, word [ebx + eax*2 + 0x20000]
sub edx, eax
jae 0x49585d
jmp 0x495baf
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 4]
cmp ecx, dword [esp + 0x14]
jae 0x495b01
movzx eax, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, dword [esp + 0x18]
jmp 0x495588
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x5c]
cmp edx, eax
jae 0x495b27
movzx eax, byte [ebp]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov eax, dword [esp + 0x50]
sub edx, edi
add ecx, edx
cmp dword [esp + 0x3c], eax
mov edx, dword [esp + 0x10]
jne 0x4955f4
jmp 0x4955bb
mov eax, dword [esp + 0x60]
lea ecx, [eax + esi]
test esi, esi
mov ebx, dword [esp + 0x5c]
jg 0x4959e5
jmp 0x495a04
mov edx, eax
cmp edx, ebx
jb 0x4953cb
jmp 0x4953f3
mov edx, edi
mov esi, dword [esp + 0x14]
cmp edi, esi
jb 0x4957ea
jmp 0x495815
mov esi, dword [esp + 0x2c]
jmp 0x495980
mov edi, ecx
cmp ecx, eax
jb 0x4958f6
jmp 0x49591f
mov ebp, dword [esp + 0x98]
mov ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x2c]
jmp 0x495bb3
mov ecx, dword [esp + 0x78]
jmp 0x495bb3
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x1c]
test edx, edx
jle 0x495e16
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0xc]
sub eax, esi
cmp eax, 0xfffe
ja 0x495e16
mov edi, esi
mov eax, dword [esp + 0xb0]
mov edx, dword [eax + 0x40000]
mov ecx, dword [eax + 0x40004]
mov dword [esp + 0x48], ecx
sub edx, ecx
mov esi, dword [eax + 0x4000c]
mov ecx, dword [esp + 0x3c]
imul ecx, dword [ecx], 0x9e3779b1
mov dword [esp], esi
add edx, esi
shr ecx, 0x11
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x10], eax
add edi, eax
mov dword [esp + 0x34], edx
sub edi, edx
mov ecx, dword [esp + 0xc]
sub ecx, edi
cmp ecx, 0xffff
ja 0x495e2e
mov esi, edi
mov edx, dword [esp + 0x48]
sub edx, dword [esp]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x98]
lea edi, [eax + ecx]
not edi
mov dword [esp + 0x5c], edi
lea edi, [edx - 1]
mov dword [esp + 0x54], edi
lea eax, [eax + ecx - 4]
mov dword [esp], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x28], edx
jmp 0x495caa
mov ebp, dword [esp + 4]
mov edx, dword [esp + 0x10]
movzx eax, dx
mov ecx, dword [esp + 0xb0]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edx, eax
mov dword [esp + 0x10], edx
sub esi, eax
mov eax, dword [esp + 0xc]
sub eax, esi
cmp eax, 0x10000
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x28]
jae 0x495e48
mov edi, dword [esp + 0x1c]
sub edi, 1
jb 0x495e48
mov dword [esp + 4], ebp
mov eax, dword [esp + 0x30]
mov ebp, edx
mov edx, dword [esp + 0x10]
cmp dword [ebp + edx], eax
mov dword [esp + 0x1c], edi
jne 0x495c6f
mov eax, dword [esp + 0x34]
sub eax, edx
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
cmova eax, ecx
lea ecx, [ebp + edx]
mov dword [esp + 0x60], ecx
lea ebx, [ecx + 4]
lea edx, [eax - 3]
mov ecx, dword [esp + 0x18]
cmp edx, ecx
mov dword [esp + 0x2c], esi
jbe 0x495d19
mov ecx, dword [ecx]
xor ecx, dword [ebx]
je 0x495d0b
tzcnt ecx, ecx
shr ecx, 3
jmp 0x495d6b
mov ecx, dword [esp + 0x60]
lea ebx, [ecx + 8]
mov ecx, dword [esp + 0x94]
cmp ecx, edx
jae 0x495d43
mov esi, dword [esp + 0x5c]
add esi, ecx
nop word cs:[eax + eax]
mov ebp, dword [ecx]
xor ebp, dword [ebx]
jne 0x495d62
add ecx, 4
add ebx, 4
add esi, 4
cmp ecx, edx
jb 0x495d30
lea edx, [eax - 1]
cmp ecx, edx
jae 0x495dba
movzx edx, word [ebx]
cmp dx, word [ecx]
mov esi, dword [esp + 0x50]
mov ebp, dword [esp + 0x48]
jne 0x495dc2
add ecx, 2
add ebx, 2
jmp 0x495dc2
tzcnt ecx, ebp
shr ecx, 3
add ecx, esi
mov esi, dword [esp + 0x50]
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x3c], esi
je 0x495de0
sub ebp, dword [esp + 0x60]
mov eax, dword [esp + 0x44]
cmp eax, ebp
cmovg ebp, eax
mov edi, ebp
sar edi, 0x1f
and edi, ebp
mov eax, dword [esp + 0x54]
lea esi, [eax + edx]
xor ebx, ebx
nop word [eax + eax]
cmp ebx, ebp
jle 0x495de2
lea eax, [ebx - 1]
mov edx, dword [esp]
movzx edx, byte [edx + ebx]
cmp dl, byte [esi + ebx]
mov ebx, eax
je 0x495da0
inc eax
mov edi, eax
jmp 0x495de2
mov esi, dword [esp + 0x50]
mov ebp, dword [esp + 0x48]
cmp ecx, eax
jae 0x495dd2
movzx eax, byte [ebx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, dword [esp + 0x18]
cmp dword [esp + 0x3c], esi
jne 0x495d7d
xor edi, edi
add ecx, 4
sub ecx, edi
mov ebp, dword [esp + 4]
cmp ecx, ebp
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x2c]
jle 0x495c73
mov eax, dword [esp + 0x4c]
add eax, esi
add eax, edi
mov dword [esp + 0x24], eax
add edi, dword [esp + 0x3c]
mov dword [esp + 0x38], edi
mov ebp, ecx
jmp 0x495c73
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x24], eax
jmp 0x495e48
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x78]
cmp ebp, dword [esp + 0x98]
je 0x496698
mov edx, dword [esp + 0x38]
cmp edx, dword [esp + 0xd4]
jae 0x495e86
mov dword [esp + 0xbc], edx
mov eax, dword [esp + 0x24]
mov dword [esp + 0x8c], eax
cmp edx, dword [esp + 0xb8]
jb 0x494ffe
jmp 0x4961a9
mov edx, dword [esp + 0x50]
cmp edx, dword [esp + 0xb8]
jae 0x495ee7
mov eax, edx
mov edi, dword [esp + 0x64]
sub eax, edi
cmp eax, 0x11
jg 0x495eeb
mov esi, dword [esp + 0x70]
add esi, 0xfffffffc
cmp dword [esp + 0xf0], esi
mov esi, dword [esp + 0x98]
lea eax, [esi + eax - 4]
mov esi, dword [esp + 0x88]
cmova esi, eax
mov eax, edi
sub eax, edx
mov dword [esp + 0x88], esi
add eax, esi
test eax, eax
jle 0x495ef2
add edx, eax
mov dword [esp + 0x50], edx
add dword [esp + 0x58], eax
sub dword [esp + 0x98], eax
jmp 0x495ef2
mov eax, dword [esp + 0x74]
mov dword [esp + 0x88], eax
mov edi, dword [esp + 0x64]
sub edi, dword [esp + 0x7c]
mov eax, edi
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x9c], 0
je 0x495f2c
shr edx, 7
mov eax, dword [esp + 0x84]
add eax, edx
inc eax
add eax, edi
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a586
mov ecx, dword [esp + 0x84]
lea esi, [ecx + 1]
cmp edi, 0xf
mov edx, edi
mov dword [esp], edi
jb 0x495f9a
lea eax, [edx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x495f8a
lea eax, [edx - 0x10e]
mov ebx, 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
lea esi, [ebx + edi]
add esi, 2
sub edi, eax
mov eax, dword [esp]
add eax, edi
add eax, 0xfffffef2
mov edx, dword [esp + 0x7c]
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x64]
mov edi, dword [esp]
jmp 0x495fab
mov eax, edx
shl al, 4
mov byte [ecx], al
mov eax, dword [esp + 0x64]
mov edi, edx
mov edx, dword [esp + 0x7c]
add eax, esi
sub eax, edx
lea ecx, [esi + 8]
cmp eax, ecx
cmovbe eax, ecx
add edi, esi
mov ecx, edx
mov edx, esi
not edx
add edx, eax
mov eax, ecx
mov ecx, esi
cmp edx, 0x18
jb 0x496019
mov ebx, esi
mov eax, dword [esp + 0x7c]
sub ebx, eax
mov ecx, esi
cmp ebx, 0x20
jb 0x496019
mov dword [esp + 4], ebp
shr edx, 3
inc edx
mov dword [esp + 0x10], edx
mov ebx, edx
and ebx, 0xfffffffc
mov edx, dword [esp + 0x7c]
lea eax, [edx + ebx*8]
lea ecx, [esi + ebx*8]
xor ebp, ebp
movups xmm0, xmmword [edx + ebp*8]
movups xmm1, xmmword [edx + ebp*8 + 0x10]
movups xmmword [esi + ebp*8], xmm0
movups xmmword [esi + ebp*8 + 0x10], xmm1
add ebp, 4
cmp ebx, ebp
jne 0x495ff6
cmp dword [esp + 0x10], ebx
mov ebp, dword [esp + 4]
je 0x49602b
movsd xmm0, qword [eax]
movsd qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, edi
jb 0x496019
mov ebx, dword [esp + 0x64]
mov eax, dword [esp + 0x88]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
sub ebx, dword [esp + 0xa0]
mov word [edi], bx
cmp dword [esp + 0x9c], 0
je 0x49606c
shr edx, 7
lea eax, [edi + edx]
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a59a
add edi, 2
mov edx, dword [esp + 0x84]
movzx eax, byte [edx]
cmp ecx, 0xf
jb 0x496152
add al, 0xf
mov byte [edx], al
mov edx, dword [esp + 0x88]
lea eax, [edx - 0x13]
cmp eax, 0x1fe
mov ebx, dword [esp + 0x20]
jb 0x4960f0
lea eax, [edx - 0x211]
mov ecx, 0x80808081
mov dword [esp + 0x88], edx
mul ecx
shr edx, 8
mov dword [esp + 4], edx
lea eax, [edx*2 + 2]
push eax
push 0xff
push edi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp]
mov ecx, dword [esp + 4]
lea eax, [eax + ecx*2]
lea edi, [esi + eax]
add edi, 4
imul eax, ecx, 0xfffffe02
mov ecx, dword [esp + 0x88]
add eax, ecx
add eax, 0xfffffdef
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x24]
cmp eax, 0xff
jb 0x496108
add eax, 0xffffff01
mov byte [edi], 0xff
inc edi
mov byte [edi], al
inc edi
mov eax, dword [esp + 0x64]
add eax, dword [esp + 0x88]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x64], eax
mov dword [esp + 0x84], edi
mov eax, dword [esp + 0x58]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xbc], eax
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x98]
jmp 0x494fc0
add al, cl
mov byte [edx], al
mov eax, dword [esp + 0x64]
add eax, dword [esp + 0x88]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x64], eax
mov dword [esp + 0x84], edi
mov eax, dword [esp + 0x58]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x8c], eax
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x78]
mov ebx, dword [esp + 0x20]
jmp 0x494fc0
mov edx, dword [esp + 0xb8]
mov esi, dword [esp + 0x50]
cmp esi, edx
jae 0x4961f4
mov eax, edx
sub eax, esi
mov edi, dword [esp + 0x98]
sub edi, eax
mov esi, edi
mov dword [esp + 0x98], edi
cmp edi, 3
jg 0x4961ec
mov eax, dword [esp + 0x38]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x58], eax
mov dword [esp + 0x98], ebp
jmp 0x4961f4
add dword [esp + 0x58], eax
mov dword [esp + 0x50], edx
mov edi, dword [esp + 0x64]
sub edi, dword [esp + 0x7c]
mov eax, edi
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x9c], 0
je 0x49622e
shr edx, 7
mov eax, dword [esp + 0x84]
add eax, edx
inc eax
add eax, edi
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a712
mov ecx, dword [esp + 0x84]
lea esi, [ecx + 1]
cmp edi, 0xf
mov edx, edi
mov dword [esp], edi
jb 0x49629b
lea eax, [edx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x49628e
lea eax, [edx - 0x10e]
mov edi, ecx
mov ecx, 0x80808081
mul ecx
mov ebx, edx
shr ebx, 7
lea eax, [ebx + 1]
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0xc]
add esp, 0xc
mov eax, ebx
shl eax, 8
lea esi, [edi + ebx]
add esi, 2
sub ebx, eax
lea eax, [edx + ebx]
add eax, 0xfffffef2
mov ebx, dword [esp + 0x7c]
mov byte [esi], al
inc esi
mov ecx, dword [esp + 0x64]
jmp 0x4962aa
mov eax, edx
shl al, 4
mov byte [ecx], al
mov ecx, dword [esp + 0x64]
mov ebx, dword [esp + 0x7c]
lea edi, [esi + edx]
mov eax, esi
not eax
add ecx, esi
sub ecx, ebx
lea edx, [esi + 8]
cmp ecx, edx
cmovbe ecx, edx
add ecx, eax
mov eax, ebx
mov edx, esi
cmp ecx, 0x18
jb 0x496317
mov ebx, esi
mov eax, dword [esp + 0x7c]
sub ebx, eax
mov edx, esi
cmp ebx, 0x20
jb 0x496317
mov dword [esp + 4], ebp
shr ecx, 3
inc ecx
mov dword [esp + 0x10], ecx
mov ebx, ecx
and ebx, 0xfffffffc
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + ebx*8]
lea edx, [esi + ebx*8]
xor ebp, ebp
movups xmm0, xmmword [ecx + ebp*8]
movups xmm1, xmmword [ecx + ebp*8 + 0x10]
movups xmmword [esi + ebp*8], xmm0
movups xmmword [esi + ebp*8 + 0x10], xmm1
add ebp, 4
cmp ebx, ebp
jne 0x4962f4
cmp dword [esp + 0x10], ebx
mov ebp, dword [esp + 4]
je 0x496329
movsd xmm0, qword [eax]
movsd qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, edi
jb 0x496317
mov ebx, dword [esp + 0x64]
mov eax, dword [esp + 0x74]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
sub ebx, dword [esp + 0xa0]
mov word [edi], bx
cmp dword [esp + 0x9c], 0
je 0x496367
shr edx, 7
lea eax, [edi + edx]
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a72d
add edi, 2
mov edx, dword [esp + 0x84]
movzx eax, byte [edx]
cmp ecx, 0xf
jb 0x496429
add al, 0xf
mov byte [edx], al
mov ecx, dword [esp + 0x74]
lea eax, [ecx - 0x13]
cmp eax, 0x1fe
mov ebx, dword [esp + 0x20]
jb 0x4963de
lea eax, [ecx - 0x211]
mov ecx, 0x80808081
mul ecx
shr edx, 8
mov dword [esp + 4], edx
lea eax, [edx*2 + 2]
push eax
push 0xff
push edi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp]
mov ecx, dword [esp + 4]
lea eax, [eax + ecx*2]
lea edi, [esi + eax]
add edi, 4
imul eax, ecx, 0xfffffe02
mov ecx, dword [esp + 0x74]
add eax, ecx
add eax, 0xfffffdef
mov edx, dword [esp + 0x24]
cmp eax, 0xff
jb 0x4963f2
add eax, 0xffffff01
mov byte [edi], 0xff
inc edi
mov byte [edi], al
inc edi
mov dword [esp + 0x84], edi
mov eax, dword [esp + 0x38]
mov dword [esp + 0xbc], eax
mov dword [esp + 0x8c], edx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0xdc], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0xd4], ecx
jmp 0x49412d
add al, cl
mov byte [edx], al
mov dword [esp + 0x84], edi
mov eax, dword [esp + 0x38]
mov dword [esp + 0xbc], eax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x8c], edx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0xdc], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0xd4], ecx
jmp 0x494129
mov eax, dword [esp + 0x38]
mov dword [esp + 0x50], eax
jmp 0x496486
mov eax, dword [esp + 0x24]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x50], eax
mov ebp, dword [esp + 0xa0]
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0xb8]
mov edi, eax
mov ecx, 0x80808081
mul ecx
cmp dword [esp + 0x9c], 0
mov esi, dword [esp + 0x84]
je 0x4964c6
shr edx, 7
lea eax, [esi + edx]
inc eax
mov ecx, edi
add eax, edi
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a4c6
lea ecx, [esi + 1]
mov edx, edi
cmp edi, 0xf
jb 0x496522
lea eax, [edx - 0xf]
mov byte [esi], 0xf0
cmp eax, 0xff
jb 0x49651d
lea eax, [edx - 0x10e]
mov dword [esp], edx
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, [esi + edi]
add ecx, 2
sub edi, eax
mov eax, dword [esp]
mov edx, eax
add eax, edi
add eax, 0xfffffef2
mov byte [ecx], al
inc ecx
jmp 0x496529
mov eax, edx
shl al, 4
mov byte [esi], al
add edx, ecx
mov dword [esp], edx
mov eax, dword [esp + 0x44]
add eax, ecx
mov esi, dword [esp + 0xb8]
sub eax, esi
lea edx, [ecx + 8]
cmp eax, edx
cmovbe eax, edx
mov edi, ecx
not edi
add edi, eax
mov eax, ecx
sub eax, esi
cmp edi, 0x18
mov dword [esp + 4], eax
jb 0x4965a2
cmp eax, 0x20
jb 0x4965a2
shr edi, 3
inc edi
mov ebx, edi
and ebx, 0xfffffffc
mov esi, dword [esp + 0xb8]
lea eax, [esi + ebx*8]
lea edx, [ecx + ebx*8]
xor ebp, ebp
nop word cs:[eax + eax]
movups xmm0, xmmword [esi + ebp*8]
movups xmm1, xmmword [esi + ebp*8 + 0x10]
movups xmmword [ecx + ebp*8], xmm0
movups xmmword [ecx + ebp*8 + 0x10], xmm1
add ebp, 4
cmp ebx, ebp
jne 0x496580
cmp edi, ebx
mov ecx, dword [esp]
jne 0x4965b0
jmp 0x4965c2
mov eax, dword [esp + 0xb8]
mov edx, ecx
mov ecx, dword [esp]
nop
movsd xmm0, qword [eax]
movsd qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, ecx
jb 0x4965b0
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x74]
mov ebp, ecx
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
sub edi, dword [esp + 0xa0]
mov word [ebp], di
cmp dword [esp + 0x9c], 0
je 0x496603
shr edx, 7
lea eax, [edx + ebp]
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a4e9
add ebp, 2
mov edx, dword [esp + 0x84]
movzx eax, byte [edx]
cmp ecx, 0xf
jb 0x496683
add al, 0xf
mov byte [edx], al
mov esi, dword [esp + 0x74]
lea eax, [esi - 0x13]
cmp eax, 0x1fe
jb 0x49666e
lea eax, [esi - 0x211]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi*2 + 2]
push eax
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x44]
lea eax, [eax + edi*2]
imul ecx, edi, 0xfffffe02
mov edx, dword [esp + 4]
lea ebp, [edx + eax]
add ebp, 4
lea eax, [ecx + esi]
add eax, 0xfffffdef
cmp eax, 0xff
jb 0x49668e
add eax, 0xffffff01
mov ecx, ebp
mov byte [ebp], 0xff
inc ecx
jmp 0x496690
add al, cl
mov byte [edx], al
mov ecx, ebp
jmp 0x496b11
mov ecx, ebp
mov byte [ecx], al
inc ecx
jmp 0x496b11
mov eax, dword [esp + 0x24]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x74]
mov esi, eax
mov ebx, dword [esp + 0x64]
sub esi, ebx
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0xb8]
cmovae esi, edx
mov dword [esp + 0x88], esi
mov dword [esp + 0x64], ebx
sub ebx, dword [esp + 0x7c]
mov eax, ebx
mov edx, 0x80808081
mul edx
cmp dword [esp + 0x9c], 0
mov edi, dword [esp + 0xb4]
mov esi, dword [esp + 0x84]
mov ebp, dword [esp + 0xa0]
je 0x496717
shr edx, 7
lea eax, [esi + edx]
inc eax
add eax, ebx
add eax, 8
cmp eax, edi
ja 0x49a51a
lea ecx, [esi + 1]
cmp ebx, 0xf
jb 0x496769
lea eax, [ebx - 0xf]
mov byte [esi], 0xf0
cmp eax, 0xff
jb 0x496776
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, [esi + edi]
add ecx, 2
sub edi, eax
mov esi, ebx
lea eax, [ebx + edi]
add eax, 0xfffffef2
jmp 0x496778
mov eax, ebx
shl al, 4
mov byte [esi], al
mov edx, dword [esp + 0x7c]
jmp 0x496781
mov esi, ebx
mov edx, dword [esp + 0x7c]
mov byte [ecx], al
inc ecx
mov ebx, esi
add ebx, ecx
mov dword [esp], ebx
mov ebx, dword [esp + 0x64]
lea eax, [ebx + ecx]
sub eax, edx
mov esi, edx
lea edx, [ecx + 8]
cmp eax, edx
cmovbe eax, edx
mov edx, ecx
not edx
add edx, eax
cmp edx, 0x18
jb 0x4967ea
mov eax, ecx
sub eax, esi
cmp eax, 0x20
jb 0x4967ea
shr edx, 3
inc edx
mov dword [esp + 4], edx
mov edi, edx
and edi, 0xfffffffc
lea eax, [esi + edi*8]
lea edx, [ecx + edi*8]
xor ebx, ebx
movups xmm0, xmmword [esi + ebx*8]
movups xmm1, xmmword [esi + ebx*8 + 0x10]
movups xmmword [ecx + ebx*8], xmm0
movups xmmword [ecx + ebx*8 + 0x10], xmm1
add ebx, 4
cmp edi, ebx
jne 0x4967c2
cmp dword [esp + 4], edi
mov ebx, dword [esp + 0x64]
mov ecx, dword [esp]
jne 0x4967f1
jmp 0x496803
mov eax, esi
mov edx, ecx
mov ecx, dword [esp]
movsd xmm0, qword [eax]
movsd qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, ecx
jb 0x4967f1
mov edi, ebx
mov esi, ebx
mov eax, dword [esp + 0x88]
mov ebx, ecx
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
sub esi, ebp
mov word [ebx], si
cmp dword [esp + 0x9c], 0
je 0x496841
shr edx, 7
lea eax, [ebx + edx]
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a52a
lea eax, [ebx + 2]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x84]
movzx eax, byte [edx]
cmp ecx, 0xf
jb 0x4968f2
add al, 0xf
mov byte [edx], al
mov edx, dword [esp + 0x88]
lea eax, [edx - 0x13]
cmp eax, 0x1fe
mov esi, dword [esp + 0x9c]
mov ebp, dword [esp + 0x50]
jb 0x4968d4
mov ebx, dword [esp + 0x74]
add ebx, edi
cmp ebp, ebx
cmovb ebx, ebp
sub ebx, edi
lea eax, [ebx - 0x211]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi*2 + 2]
push eax
push 0xff
push dword [esp + 0xc]
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x94]
add esp, 0xc
imul eax, edi, 0xfffffe02
mov ecx, dword [esp]
lea ecx, [ecx + edi*2]
add ecx, 4
mov dword [esp + 4], ecx
add eax, ebx
add eax, 0xfffffdef
mov ecx, dword [esp + 0x78]
cmp eax, 0xff
jb 0x496910
add eax, 0xffffff01
mov edi, dword [esp + 4]
mov byte [edi], 0xff
inc edi
mov ebx, dword [esp + 0x64]
jmp 0x496918
add al, cl
mov byte [edx], al
mov esi, dword [esp + 0x9c]
mov ecx, dword [esp + 0x78]
mov ebp, dword [esp + 0x50]
mov edx, dword [esp + 0x88]
mov ebx, edi
jmp 0x49691f
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 4]
mov byte [edi], al
inc edi
mov dword [esp + 4], edi
lea eax, [ebx + edx]
mov edi, ebp
mov dword [esp + 0x10], eax
sub edi, eax
mov eax, edi
mov edx, 0x80808081
mul edx
test esi, esi
mov esi, dword [esp + 4]
je 0x496954
shr edx, 7
lea eax, [esi + edx]
inc eax
add eax, edi
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a542
lea ebp, [esi + 1]
cmp edi, 0xf
mov ecx, edi
jb 0x4969b2
lea eax, [ecx - 0xf]
mov byte [esi], 0xf0
cmp eax, 0xff
jb 0x4969ac
lea eax, [ecx - 0x10e]
mov esi, 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
mov ecx, esi
add esp, 0xc
mov eax, edi
shl eax, 8
mov edx, dword [esp + 4]
lea ebp, [edx + edi]
add ebp, 2
sub edi, eax
lea eax, [esi + edi]
add eax, 0xfffffef2
mov byte [ebp], al
inc ebp
jmp 0x4969b9
mov eax, ecx
shl al, 4
mov byte [esi], al
add ecx, ebp
mov eax, dword [esp + 0x50]
add eax, ebp
mov esi, dword [esp + 0x10]
sub eax, esi
mov edi, ecx
lea ecx, [ebp + 8]
cmp eax, ecx
cmovbe eax, ecx
mov edx, ebp
not edx
add edx, eax
mov eax, esi
mov ecx, ebp
cmp edx, 0x18
jb 0x496a3a
mov esi, ebp
mov eax, dword [esp + 0x10]
sub esi, eax
mov ecx, ebp
cmp esi, 0x20
jb 0x496a3a
mov dword [esp], edi
shr edx, 3
inc edx
mov edi, edx
and edi, 0xfffffffc
mov eax, dword [esp + 0x10]
lea eax, [eax + edi*8]
lea ecx, [edi*8]
add ecx, ebp
mov esi, dword [esp + 0x88]
add ebx, esi
add ebx, 0x10
xor esi, esi
movups xmm0, xmmword [ebx + esi*8 - 0x10]
movups xmm1, xmmword [ebx + esi*8]
movups xmmword [ebp + esi*8], xmm0
movups xmmword [ebp + esi*8 + 0x10], xmm1
add esi, 4
cmp edi, esi
jne 0x496a19
cmp edx, edi
mov edi, dword [esp]
je 0x496a4c
movsd xmm0, qword [eax]
movsd qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, edi
jb 0x496a3a
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x98]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
sub esi, dword [esp + 0x58]
mov word [edi], si
cmp dword [esp + 0x9c], 0
je 0x496a8a
shr edx, 7
lea eax, [edi + edx]
add eax, 8
cmp eax, dword [esp + 0xb4]
ja 0x49a55e
add edi, 2
mov ebx, edi
mov edx, dword [esp + 4]
movzx eax, byte [edx]
cmp ecx, 0xf
jb 0x496b0b
add al, 0xf
mov byte [edx], al
mov esi, dword [esp + 0x98]
lea eax, [esi - 0x13]
cmp eax, 0x1fe
jb 0x496af6
lea eax, [esi - 0x211]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi*2 + 2]
push eax
push 0xff
push ebx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x50]
lea eax, [eax + edi*2]
sub eax, dword [esp + 0x10]
lea ebx, [eax + ebp]
add ebx, 4
imul eax, edi, 0xfffffe02
add eax, esi
add eax, 0xfffffdef
cmp eax, 0xff
jb 0x496b06
add eax, 0xffffff01
mov byte [ebx], 0xff
inc ebx
mov byte [ebx], al
inc ebx
jmp 0x496b0f
add al, cl
mov byte [edx], al
mov ecx, ebx
mov edx, ecx
mov esi, ecx
mov ecx, dword [esp + 0x70]
mov eax, ecx
cmp ecx, dword [esp + 0xac]
mov edi, dword [esp + 0xa0]
jbe 0x493479
jmp 0x49a096
mov ebx, esi
mov esi, dword [esp + 0xc8]
mov eax, dword [esp + 8]
jmp 0x496b59
mov esi, dword [esp + 0xc8]
mov eax, dword [esp + 8]
mov edx, dword [esp]
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x10]
mov dword [ebp + 0x40010], ecx
mov dword [ebp + 0x40008], ebx
sub edx, ebx
add edx, ecx
mov dword [ebp + 0x4000c], edx
mov dword [ebp + 0x40004], esi
mov dword [ebp + 0x40000], esi
mov dword [ebp + 0x40014], edx
mov dword [ebp + 0x4001c], 0
mov word [ebp + 0x40018], ax
mov ecx, ebp
mov edx, esi
add esp, 0x11c
pop esi
pop edi
pop ebx
pop ebp
jmp fcn.0048ca70
mov eax, dword [esp + 0xc8]
lea ecx, [eax + ebx]
add ecx, 0xfffffffb
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x104]
lea edx, [ecx - 8]
mov dword [esp + 0x10], edx
lea ecx, [ecx - 6]
mov dword [esp + 0xec], ecx
lea ecx, [ebx + eax - 5]
mov dword [esp + 0x100], ecx
mov ecx, dword [esp + 0x68]
lea edx, [ecx + 0x4c]
mov dword [esp + 0x110], edx
add ecx, 0x50
mov dword [esp + 0x10c], ecx
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0xac], ecx
mov dword [esp + 0x90], eax
mov ecx, eax
jmp 0x496c1f
inc dword [esp + 0x34]
mov ecx, dword [esp + 0x34]
cmp ecx, dword [esp + 0xbc]
ja 0x49328e
mov ebx, dword [esp + 0x20]
mov edx, dword [ebx + 0x40004]
mov esi, dword [ebx + 0x4000c]
mov eax, ecx
mov dword [esp + 0x58], edx
sub eax, edx
lea edx, [eax + esi]
mov edi, dword [ebx + 0x40010]
lea ebp, [edi + 0x10000]
mov dword [esp + 0xb8], ebp
cmp ebp, edx
lea eax, [eax + esi - 0xffff]
mov dword [esp + 0xb0], edi
cmova eax, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], esi
neg esi
mov dword [esp + 0x38], esi
mov eax, ecx
mov dword [esp + 0x34], ecx
mov eax, dword [ecx]
mov dword [esp], eax
mov eax, dword [ebx + 0x40014]
cmp eax, edx
mov dword [esp + 0x30], edx
jae 0x496cd5
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x38]
add ecx, edx
jmp 0x496cb7
movzx edi, ax
mov word [ebx + edi*2 + 0x20000], si
mov dword [ebx + edx*4], eax
inc eax
mov edx, dword [esp + 0x30]
cmp eax, edx
jae 0x496cd5
imul edx, dword [ecx + eax], 0x9e3779b1
shr edx, 0x11
mov esi, eax
sub esi, dword [ebx + edx*4]
cmp esi, 0xffff
jb 0x496ca0
mov esi, 0xffff
jmp 0x496ca0
mov eax, dword [ebx + 0x4001c]
mov dword [esp + 0x94], eax
mov eax, dword [ebx + 0x40008]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xb0]
mov edi, eax
neg edi
mov ebp, dword [esp + 0xc]
sub ebp, eax
mov dword [ebx + 0x40014], edx
mov edx, dword [esp]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
xor edx, eax
mov eax, dword [esp + 0x34]
imul ebx, dword [eax], 0x9e3779b1
shr ebx, 0x11
mov esi, dword [esp + 0x58]
add dword [esp + 0x38], esi
or edx, ecx
mov dword [esp + 0x7c], ebp
mov edx, dword [esp + 0x3c]
lea ecx, [edx + ebp]
mov dword [esp + 0xc4], ecx
sete byte [esp + 0x5c]
add edi, edx
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0xc]
lea ecx, [eax + 4]
mov dword [esp + 0x4c], ecx
add eax, 8
mov dword [esp + 0x6c], eax
lea eax, [edi - 4]
mov dword [esp + 0xcc], eax
lea eax, [esi + 4]
mov dword [esp + 0xf0], eax
mov dword [esp + 0x18], 0
mov ebp, 3
mov eax, dword [esp + 0x40]
test eax, eax
mov dword [esp + 0x74], ebx
jle 0x4976b6
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + ebx*4]
mov ecx, edx
mov dword [esp + 4], edx
cmp edx, dword [esp + 0x14]
mov edx, dword [esp + 0x30]
mov ebx, eax
jb 0x4976c2
mov esi, 0xfffffffc
mov eax, dword [esp + 0x34]
sub esi, eax
mov dword [esp + 0x70], esi
add eax, edi
mov dword [esp + 0xd8], eax
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x18], 0
nop dword [eax]
cmp byte [esp + 0x60], 0
mov ecx, dword [esp + 4]
je 0x496e08
mov eax, edx
sub eax, ecx
cmp eax, 8
jb 0x496ed0
mov esi, edi
sub esi, ecx
jbe 0x496e80
cmp ecx, dword [esp + 0xcc]
ja 0x496ed0
mov edx, ecx
sub edx, dword [esp + 0xb0]
add edx, dword [esp + 0x3c]
mov eax, dword [esp]
cmp dword [edx], eax
jne 0x496ed0
mov dword [esp + 0x28], ebp
add esi, dword [esp + 0x34]
mov eax, dword [esp + 0x54]
cmp esi, eax
mov ecx, esi
cmova ecx, eax
lea eax, [edx + 4]
mov dword [esp + 8], ecx
lea edi, [ecx - 3]
mov ebx, dword [esp + 0x4c]
cmp edi, ebx
jbe 0x4976a7
mov ebx, dword [ebx]
xor ebx, dword [eax]
je 0x49718b
tzcnt edx, ebx
shr edx, 3
jmp 0x4971fb
mov eax, dword [esp + 0x38]
lea esi, [eax + ecx]
mov eax, dword [esp + 0x34]
movzx eax, word [eax + ebp - 1]
cmp ax, word [ebp + esi - 1]
jne 0x496ed0
mov eax, dword [esp]
cmp dword [esi], eax
jne 0x496ed0
lea edx, [esi + 4]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x10]
cmp ecx, eax
jbe 0x497351
mov eax, dword [eax]
xor eax, dword [edx]
je 0x49734a
tzcnt eax, eax
shr eax, 3
add eax, 4
cmp eax, ebp
jg 0x49745a
jmp 0x496ed2
xor eax, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
lea ebx, [eax - 1]
cmp dword [esp + 0x2c], ebp
mov dword [esp + 0x28], ebp
jne 0x496fa0
mov eax, dword [esp + 4]
lea edx, [eax + ebp]
mov eax, dword [esp + 0x30]
cmp edx, eax
mov edx, eax
ja 0x496fa4
mov eax, dword [esp + 0x2c]
cmp eax, 4
jl 0x496fa4
mov dword [esp + 0x24], ebx
add eax, 0xfffffffd
mov dword [esp + 8], eax
xor esi, esi
mov ebp, 0x10
mov edx, 1
mov edi, dword [esp + 4]
mov ecx, dword [esp + 0x48]
nop dword [eax]
mov eax, edx
lea edx, [esi + edi]
movzx edx, dx
mov ebx, dword [esp + 0x20]
movzx edx, word [ebx + edx*2 + 0x20000]
lea ebx, [ebp + 1]
sar ebp, 4
cmp eax, edx
cmova edx, eax
mov eax, 0x10
cmovb ebx, eax
cmovb ecx, esi
add esi, ebp
mov ebp, ebx
cmp esi, dword [esp + 8]
jl 0x496f30
mov dword [esp + 0x48], ecx
cmp edx, 1
ja 0x49708b
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
movzx eax, word [esp + 4]
mov ecx, dword [esp + 0x20]
cmp word [ecx + eax*2 + 0x20000], 1
je 0x496fc0
jmp 0x497270
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x14]
movzx eax, word [esp + 4]
mov ecx, dword [esp + 0x20]
cmp word [ecx + eax*2 + 0x20000], 1
jne 0x497270
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x497274
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x49700e
mov dword [esp + 0x44], ecx
cmp ecx, 2
jne 0x497274
mov ecx, dword [esp + 4]
lea eax, [ecx - 1]
cmp eax, ebp
jb 0x497270
mov edx, edi
sub edx, ecx
cmp edx, 3
jae 0x4970be
mov dword [esp + 0x44], 2
mov edx, dword [esp + 0x30]
jmp 0x497270
mov dword [esp + 0x44], 1
cmp byte [esp + 0x5c], 0
je 0x497274
mov dword [esp + 0x24], ebx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x10]
mov ebx, eax
cmp ecx, eax
jbe 0x497055
nop word cs:[eax + eax]
mov edx, dword [eax]
xor edx, dword [esp]
jne 0x497152
add eax, 4
add ebx, 4
cmp eax, ecx
jb 0x497040
mov edi, dword [esp + 0x54]
cmp eax, edi
jae 0x497622
sub edi, ebx
lea ecx, [eax + edi]
mov edx, dword [esp]
mov ebx, dword [esp + 0x24]
cmp byte [eax], dl
jne 0x49707a
inc eax
shr edx, 8
dec edi
jne 0x49706d
mov eax, ecx
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x14]
jmp 0x497165
mov ecx, dword [esp + 4]
cmp edx, ecx
mov eax, 0
cmova edx, eax
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
ja 0x49a067
sub ecx, edx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x30]
jmp 0x49728f
cmp eax, edi
mov edx, edi
mov edi, dword [esp + 0x38]
cmovb edi, dword [esp + 0x64]
mov ebp, dword [esp]
cmp dword [edi + eax], ebp
jne 0x497255
mov dword [esp + 0x24], ebx
lea ebp, [edi + eax]
cmp eax, edx
mov ecx, dword [esp + 0x54]
cmovb ecx, dword [esp + 0xc4]
lea edx, [ebp + 4]
mov dword [esp + 8], ecx
lea esi, [ecx - 3]
mov ecx, edx
cmp esi, edx
jbe 0x497125
mov ecx, dword [esp + 4]
add edi, ecx
add edi, 3
mov ecx, edx
nop word [eax + eax]
mov ebx, dword [ecx]
xor ebx, dword [esp]
jne 0x4972b5
add ecx, 4
add edi, 4
cmp ecx, esi
jb 0x497110
mov esi, dword [esp + 8]
cmp ecx, esi
mov edi, dword [esp + 0xc]
jae 0x4972c2
sub esi, ecx
mov ebx, dword [esp]
cmp byte [ecx], bl
jne 0x4972c2
inc ecx
shr ebx, 8
dec esi
jne 0x49713a
mov ecx, dword [esp + 8]
jmp 0x4972c2
tzcnt eax, edx
shr eax, 3
add ebx, eax
mov eax, ebx
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x24]
sub eax, dword [esp + 0x4c]
add eax, 4
mov dword [esp + 0x50], eax
mov ecx, 2
mov eax, dword [esp + 0x48]
mov dword [esp + 0x44], ecx
cmp ecx, 2
je 0x496fe1
jmp 0x497274
add edx, 8
mov eax, edx
mov edx, dword [esp + 0x6c]
cmp edx, edi
jae 0x4971b3
mov ebx, dword [esp + 0x70]
lea ebp, [ebx + edx]
nop
mov ebx, dword [edx]
xor ebx, dword [eax]
jne 0x4971f2
add edx, 4
add eax, 4
add ebp, 4
cmp edx, edi
jb 0x4971a0
mov ebx, dword [esp + 8]
lea edi, [ebx - 1]
cmp edx, edi
jae 0x4971cc
movzx edi, word [eax]
cmp di, word [edx]
jne 0x4971cc
add edx, 2
add eax, 2
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x28]
cmp edx, ebx
jae 0x4971e8
movzx eax, byte [eax]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 4]
sub edx, dword [esp + 0x4c]
jmp 0x49720b
tzcnt edx, ebx
shr edx, 3
add edx, ebp
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 8]
lea eax, [edx + 4]
cmp esi, dword [esp + 0x54]
jae 0x497447
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x34]
add edx, eax
add edx, 4
cmp edx, ebx
jne 0x497341
mov eax, dword [esp + 0x58]
mov esi, eax
mov edx, ebx
cmp dword [esp + 0x10], ebx
jbe 0x4973a9
mov edx, dword [ebx]
xor edx, dword [eax]
je 0x49739f
tzcnt edx, edx
shr edx, 3
jmp 0x497441
mov dword [esp + 0x44], 2
mov edi, edx
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x14]
nop word [eax + eax]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 4]
add eax, ecx
movzx eax, ax
mov esi, edi
mov edi, dword [esp + 0x20]
movzx eax, word [edi + eax*2 + 0x20000]
mov edi, esi
sub ecx, eax
mov dword [esp + 4], ecx
cmp ecx, ebp
jb 0x4976be
cmp dword [esp + 0x1c], 1
mov eax, ebx
mov dword [esp + 0x1c], ebx
mov ebp, dword [esp + 0x28]
jg 0x496df0
jmp 0x4976c2
tzcnt ecx, ebx
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0xc]
sub ecx, edx
lea edx, [ecx + 4]
cmp eax, edi
mov esi, dword [esp + 0x58]
mov dword [esp + 8], edx
jae 0x497465
add edx, ebp
cmp edx, dword [esp + 0xc4]
jne 0x497482
shl ecx, 3
mov edx, dword [esp]
rol edx, cl
cmp dword [esp + 0x10], esi
mov ecx, esi
mov ebx, dword [esp + 0x54]
mov edi, esi
jbe 0x497316
nop dword [eax]
mov esi, dword [ecx]
xor esi, edx
jne 0x497469
add ecx, 4
add edi, 4
cmp ecx, dword [esp + 0x10]
jb 0x497300
cmp ecx, ebx
jae 0x497472
mov esi, ebx
sub esi, edi
lea edi, [ecx + esi]
cmp byte [ecx], dl
jne 0x497332
inc ecx
shr edx, 8
dec esi
jne 0x497325
mov ecx, edi
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 8]
mov edi, ecx
jmp 0x49747a
mov eax, dword [esp + 0x2c]
jmp 0x497447
lea edx, [esi + 8]
mov eax, dword [esp + 0x6c]
cmp eax, ecx
jae 0x497377
mov edi, dword [esp + 0x70]
add edi, eax
nop dword [eax + eax]
mov ebx, dword [eax]
xor ebx, dword [edx]
jne 0x497413
add eax, 4
add edx, 4
add edi, 4
cmp eax, ecx
jb 0x497360
cmp eax, dword [esp + 0xec]
jae 0x497635
movzx edi, word [edx]
cmp di, word [eax]
mov ecx, dword [esp + 0x54]
jne 0x497639
add eax, 2
add edx, 2
jmp 0x497639
lea edx, [ebx + 4]
mov esi, dword [esp + 0xf0]
mov eax, dword [esp + 0x10]
cmp edx, eax
jae 0x4973e3
mov ebx, dword [esp + 0xd8]
sub ebx, dword [esp + 4]
mov edi, dword [esp + 0x100]
cmp ebx, edi
cmovae ebx, edi
mov edi, edx
sub edi, ebx
nop dword [eax]
mov ebx, dword [edx]
xor ebx, dword [esi]
jne 0x49742c
add edx, 4
add esi, 4
add edi, 4
cmp edx, eax
jb 0x4973d0
cmp edx, dword [esp + 0xec]
jae 0x497665
movzx edi, word [esi]
cmp di, word [edx]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x2c]
jne 0x497406
add edx, 2
add esi, 2
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x28]
jmp 0x497675
tzcnt eax, ebx
shr eax, 3
add eax, edi
mov edi, dword [esp + 0xc]
add eax, 4
cmp eax, ebp
jg 0x49745a
jmp 0x496ed2
tzcnt edx, ebx
shr edx, 3
add edx, edi
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x2c]
add eax, edx
cmp eax, ebp
jle 0x496ed2
mov edx, eax
mov eax, dword [esp + 0x38]
lea esi, [eax + ecx]
mov eax, edx
mov dword [esp + 0x18], esi
mov ebp, eax
jmp 0x496ed2
mov ecx, esi
jmp 0x497486
tzcnt ecx, esi
shr ecx, 3
add edi, ecx
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 8]
sub esi, edx
add esi, edi
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp]
mov dword [esp + 0xa4], edx
lea edx, [ecx + 4]
mov esi, ebp
nop word cs:[eax + eax]
mov edi, esi
cmp esi, edx
jb 0x4974b1
lea esi, [edi - 4]
mov ebx, dword [esp]
cmp dword [edi - 4], ebx
je 0x4974a0
cmp edi, ecx
jbe 0x4974d0
lea edx, [esp + 0xa7]
nop dword [eax]
movzx ebx, byte [edi - 1]
cmp bl, byte [edx]
jne 0x4974d0
dec edi
dec edx
cmp edi, ecx
ja 0x4974c0
mov edi, ecx
mov edx, ebp
sub edx, edi
mov edi, dword [esp + 0xc]
cmp eax, edi
jb 0x49755d
sub ebp, edx
cmp ebp, dword [esp + 0x58]
jne 0x49755d
cmp edi, dword [esp + 0xb0]
jbe 0x49755d
mov ecx, edx
neg ecx
shl ecx, 3
mov ebx, dword [esp]
rol ebx, cl
mov dword [esp + 0xa4], ebx
mov esi, dword [esp + 0x7c]
nop dword [eax + eax]
cmp esi, 4
jl 0x497694
lea ecx, [esi - 4]
mov ebp, dword [esp + 0x3c]
cmp dword [ebp + esi - 4], ebx
mov esi, ecx
je 0x497510
mov esi, dword [esp + 0x3c]
add ecx, esi
add ecx, 4
lea esi, [esp + 0xa7]
nop dword [eax + eax]
movzx ebx, byte [ecx - 1]
cmp bl, byte [esi]
jne 0x497554
dec ecx
dec esi
cmp ecx, dword [esp + 0x3c]
ja 0x497540
mov ecx, dword [esp + 0x3c]
add edx, dword [esp + 0xc4]
sub edx, ecx
mov ebx, eax
sub ebx, edx
mov ebp, dword [esp + 0x14]
cmp ebx, ebp
cmovbe ebx, ebp
mov edx, eax
mov ecx, ebx
sub edx, ebx
mov esi, dword [esp + 8]
add edx, esi
mov ebx, dword [esp + 0x50]
cmp esi, ebx
ja 0x4975a6
cmp edx, ebx
jb 0x4975a6
sub eax, ebx
add esi, eax
mov eax, esi
not eax
add eax, edi
cmp eax, 3
cmovb esi, edi
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 2
mov ecx, esi
jmp 0x4975c3
mov eax, ecx
not eax
add eax, edi
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 2
cmp eax, 3
jae 0x4975d0
mov ecx, edi
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x24]
jmp 0x49728f
mov eax, dword [esp + 0x50]
cmp edx, eax
cmovae edx, eax
cmp dword [esp + 0x28], edx
mov ebx, dword [esp + 0x24]
jae 0x497602
mov eax, dword [esp + 0x30]
sub eax, ecx
cmp eax, 0xffff
ja 0x49a07b
mov eax, dword [esp + 0x38]
add eax, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edx
movzx eax, cx
mov edx, dword [esp + 0x20]
movzx eax, word [edx + eax*2 + 0x20000]
sub ecx, eax
mov edx, dword [esp + 0x30]
jae 0x49728f
jmp 0x4976be
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x14]
mov eax, ebx
jmp 0x497161
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0xc]
cmp eax, ecx
jae 0x49764d
movzx edx, byte [edx]
xor ebx, ebx
cmp dl, byte [eax]
sete bl
add eax, ebx
mov ecx, eax
sub ecx, dword [esp + 0x4c]
mov eax, ecx
add eax, 4
cmp eax, ebp
jg 0x49745a
jmp 0x496ed2
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
cmp edx, ecx
jae 0x497685
movzx ecx, byte [esi]
xor ebx, ebx
cmp cl, byte [edx]
sete bl
add edx, ebx
mov ecx, dword [esp + 4]
mov esi, dword [esp + 8]
sub edx, esi
jmp 0x497445
mov ecx, dword [esp + 0x3c]
add ecx, esi
test esi, esi
jg 0x497531
jmp 0x497554
mov edx, ebx
cmp edx, edi
jb 0x497198
jmp 0x4971b3
mov edx, dword [esp + 0x30]
mov ebx, eax
jmp 0x4976c2
mov ebp, dword [esp + 0x28]
test ebx, ebx
mov dword [esp + 0x28], ebp
jle 0x49785f
mov eax, edx
mov esi, dword [esp + 0x14]
sub eax, esi
cmp eax, 0xfffe
ja 0x49785f
mov ecx, dword [esp + 0x94]
mov ebp, dword [ecx + 0x40000]
mov eax, dword [ecx + 0x40004]
sub ebp, eax
mov edi, dword [ecx + 0x4000c]
mov dword [esp + 4], edi
add ebp, edi
mov edi, dword [esp + 0x74]
mov edi, dword [ecx + edi*4]
add esi, edi
mov dword [esp + 8], ebp
sub esi, ebp
mov ecx, edx
mov dword [esp + 0x14], esi
sub ecx, esi
cmp ecx, 0xffff
ja 0x49785f
sub eax, dword [esp + 4]
mov ecx, 0xfffffffc
sub ecx, dword [esp + 0x34]
mov dword [esp + 0x1c], ecx
mov ebp, eax
mov dword [esp + 4], eax
jmp 0x49776d
mov esi, dword [esp + 0x14]
movzx eax, di
mov ecx, dword [esp + 0x94]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edi, eax
sub esi, eax
mov eax, edx
mov dword [esp + 0x14], esi
sub eax, esi
cmp eax, 0x10000
jae 0x49785f
sub ebx, 1
jb 0x49785f
mov eax, dword [esp]
cmp dword [ebp + edi], eax
jne 0x497740
mov dword [esp + 0x24], ebx
mov ecx, ebp
mov ebp, dword [esp + 8]
sub ebp, edi
add ebp, dword [esp + 0x34]
mov eax, dword [esp + 0x54]
cmp ebp, eax
cmova ebp, eax
lea edx, [ecx + edi]
lea ebx, [edx + 4]
lea eax, [ebp - 3]
mov ecx, dword [esp + 0x4c]
cmp eax, ecx
jbe 0x497853
mov esi, dword [ecx]
xor esi, dword [ebx]
je 0x4977bc
tzcnt edx, esi
shr edx, 3
jmp 0x49781d
add edx, 8
mov ebx, edx
mov edx, dword [esp + 0x6c]
cmp edx, eax
jae 0x4977e3
mov ecx, dword [esp + 0x1c]
lea esi, [ecx + edx]
mov ecx, dword [edx]
xor ecx, dword [ebx]
jne 0x497814
add edx, 4
add ebx, 4
add esi, 4
cmp edx, eax
jb 0x4977d0
lea eax, [ebp - 1]
cmp edx, eax
jae 0x4977f8
movzx eax, word [ebx]
cmp ax, word [edx]
jne 0x4977f8
add edx, 2
add ebx, 2
cmp edx, ebp
jae 0x497808
movzx eax, byte [ebx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 4]
sub edx, eax
jmp 0x497821
tzcnt edx, ecx
shr edx, 3
add edx, esi
mov ebp, dword [esp + 4]
add edx, 4
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
add eax, esi
mov ecx, dword [esp + 0x28]
cmp edx, ecx
mov ebx, dword [esp + 0x18]
cmovg ebx, eax
mov dword [esp + 0x18], ebx
cmovg ecx, edx
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x24]
jmp 0x497744
mov edx, ecx
cmp edx, eax
jb 0x4977c9
jmp 0x4977e3
mov ecx, dword [esp + 0x28]
cmp ecx, 4
jl 0x496c0a
mov ebp, dword [esp + 0x34]
mov edx, ebp
sub edx, dword [esp + 0x90]
lea eax, [ecx - 0x13]
cmp eax, 0x12
mov ebx, ecx
mov eax, 0x12
cmovb ebx, eax
cmp byte [esp + 0x60], 0
cmove ebx, ecx
mov eax, ebp
sub eax, dword [esp + 0x18]
mov dword [esp + 8], eax
cmp dword [esp + 0x108], ebx
mov eax, edx
mov dword [esp], edx
mov dword [esp + 4], ebx
jae 0x497948
mov eax, edx
mov ecx, 0x80808081
mov esi, edx
mul ecx
cmp dword [esp + 0x9c], 0
je 0x4978e5
shr edx, 7
mov eax, dword [esp + 0xac]
add eax, edx
inc eax
add eax, esi
add eax, 8
cmp eax, dword [esp + 0xe0]
ja 0x49a24d
mov ebx, dword [esp + 0xac]
lea ebp, [ebx + 1]
cmp esi, 0xf
mov edx, esi
jb 0x497a31
lea eax, [edx - 0xf]
mov byte [ebx], 0xf0
cmp eax, 0xff
jb 0x49793f
lea eax, [edx - 0x10e]
mul ecx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ebp
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0xc]
add esp, 0xc
mov eax, edi
shl eax, 8
lea ebp, [ebx + edi]
add ebp, 2
sub edi, eax
lea eax, [edx + edi]
add eax, 0xfffffef2
mov byte [ebp], al
inc ebp
jmp 0x497a38
cmp edx, 0xe
jle 0x49796b
lea eax, [edx - 0xf]
mov ebp, 0x80808081
mul ebp
shr edx, 7
mov eax, dword [esp]
lea ecx, [eax + 1]
mov eax, dword [esp]
add eax, edx
inc eax
mov edx, dword [esp]
jmp 0x497975
lea ecx, [edx + 1]
mov eax, edx
mov ebp, 0x80808081
mov esi, dword [esp + 0x68]
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 0x4979a2
lea eax, [ecx - 0xf]
mul ebp
shr edx, 7
lea eax, [ecx + edx]
inc eax
mov edx, dword [esp]
mov dword [esi + 0x18], 1
mov dword [esi + 0x14], 0
mov dword [esi + 0x1c], ecx
mov dword [esi + 0x10], eax
lea edi, [edx + 2]
cmp edx, 0xd
jl 0x4979f2
lea eax, [edx - 0xd]
mul ebp
shr edx, 7
mov ebx, esi
mov eax, dword [esp]
lea esi, [eax + 3]
mov eax, dword [esp]
lea eax, [edx + eax + 3]
mov edx, dword [esp]
mov dword [ebx + 0x28], 1
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x2c], edi
mov dword [ebx + 0x20], eax
mov ebx, dword [esp + 4]
jmp 0x497a14
mov dword [esi + 0x28], 1
mov dword [esi + 0x24], 0
mov dword [esi + 0x2c], edi
mov dword [esi + 0x20], edi
mov esi, 0xf
cmp edx, 0xc
jne 0x497bb3
mov dword [esp + 0x1c], esi
lea eax, [edx - 0xc]
mul ebp
shr edx, 7
mov eax, dword [esp]
lea edi, [eax + edx]
add edi, 4
mov edx, dword [esp]
jmp 0x497bba
mov eax, edx
shl al, 4
mov byte [ebx], al
mov eax, dword [esp + 0x34]
add eax, ebp
mov edi, dword [esp + 0x90]
sub eax, edi
lea ecx, [ebp + 8]
cmp eax, ecx
cmovbe eax, ecx
lea esi, [edx + ebp]
mov edx, ebp
not edx
add edx, eax
mov eax, edi
mov ecx, ebp
cmp edx, 0x18
jb 0x497ad0
mov edi, ebp
mov eax, dword [esp + 0x90]
sub edi, eax
mov ecx, ebp
cmp edi, 0x20
jb 0x497ad0
shr edx, 3
inc edx
mov dword [esp + 0x28], edx
mov edi, edx
and edi, 0xfffffffc
mov edx, dword [esp + 0x90]
lea eax, [edx + edi*8]
lea ecx, [edi*8]
add ecx, ebp
xor ebx, ebx
nop word cs:[eax + eax]
movups xmm0, xmmword [edx + ebx*8]
movups xmm1, xmmword [edx + ebx*8 + 0x10]
movups xmmword [ebp + ebx*8], xmm0
movups xmmword [ebp + ebx*8 + 0x10], xmm1
add ebx, 4
cmp edi, ebx
jne 0x497aa0
cmp dword [esp + 0x28], edi
mov ebx, dword [esp + 0xac]
je 0x497ae2
nop word [eax + eax]
movsd xmm0, qword [eax]
movsd qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, esi
jb 0x497ad0
mov eax, dword [esp + 4]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
mov eax, dword [esp + 8]
mov word [esi], ax
cmp dword [esp + 0x9c], 0
je 0x497b19
shr edx, 7
lea eax, [esi + edx]
add eax, 8
cmp eax, dword [esp + 0xe0]
ja 0x49a204
add esi, 2
movzx eax, byte [ebx]
cmp ecx, 0xf
jb 0x497b8c
add al, 0xf
mov byte [ebx], al
mov ebx, dword [esp + 4]
lea eax, [ebx - 0x13]
cmp eax, 0x1fe
jb 0x497b77
lea eax, [ebx - 0x211]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi*2 + 2]
push eax
push 0xff
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp]
lea eax, [eax + edi*2]
lea esi, [eax + ebp]
add esi, 4
imul eax, edi, 0xfffffe02
add eax, ebx
add eax, 0xfffffdef
cmp eax, 0xff
jb 0x497b87
add eax, 0xffffff01
mov byte [esi], 0xff
inc esi
mov byte [esi], al
inc esi
jmp 0x497b94
add al, cl
mov byte [ebx], al
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x34]
add ecx, ebx
mov eax, ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0xac], esi
jmp 0x496c0e
lea edi, [edx + 3]
mov dword [esp + 0x1c], edi
lea eax, [edx - 0xf]
mov esi, edx
mul ebp
shr edx, 7
add ecx, edx
cmp esi, 0xf
mov eax, dword [esp + 0x68]
mov dword [eax + 0x38], 1
mov dword [eax + 0x34], 0
mov edx, dword [esp + 0x1c]
mov dword [eax + 0x3c], edx
mov dword [eax + 0x30], edi
cmovl ecx, esi
lea esi, [ecx + 3]
add ecx, 4
mov edi, ebx
neg edi
mov ebp, 4
mov ebx, dword [esp + 0x110]
jmp 0x497c1f
mov dword [ebx - 4], ebp
mov eax, dword [esp + 8]
mov dword [ebx - 8], eax
mov eax, dword [esp]
mov dword [ebx], eax
mov dword [ebx - 0xc], edx
lea eax, [edi + ebp]
inc eax
inc ebp
add ebx, 0x10
cmp eax, 1
je 0x497c37
mov edx, esi
cmp ebp, 0x13
jb 0x497c00
lea eax, [ebp - 0x13]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ecx
jmp 0x497c00
mov edi, dword [esp + 4]
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 edx, edi
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
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0xc]
jle 0x499d9d
mov eax, dword [esp + 0x34]
lea ecx, [edi + eax]
inc ecx
mov dword [esp + 0xd4], ecx
sub ecx, dword [esp + 0x58]
mov dword [esp + 0x6c], ecx
lea ecx, [edi + eax]
mov dword [esp + 0x114], ecx
mov ecx, 0xfffffffb
sub ecx, eax
mov dword [esp + 0xc0], ecx
add eax, 5
mov dword [esp + 0xa0], eax
mov eax, 1
mov dword [esp + 0x28], edx
mov dword [esp + 0x50], 0
mov ecx, dword [esp + 0x10c]
mov dword [esp + 0x88], ecx
jmp 0x497dbc
mov esi, ecx
mov eax, dword [esp + 0x28]
shl eax, 4
mov edi, dword [esp + 0x68]
mov dword [edi + eax + 0x18], 1
mov dword [edi + eax + 0x14], 0
mov dword [edi + eax + 0x1c], 1
mov ecx, dword [edi + eax]
lea edx, [ecx + 1]
mov dword [edi + eax + 0x10], edx
mov dword [edi + eax + 0x28], 1
mov dword [edi + eax + 0x24], 0
mov dword [edi + eax + 0x2c], 2
lea edx, [ecx + 2]
mov dword [edi + eax + 0x20], edx
mov dword [edi + eax + 0x38], 1
mov dword [edi + eax + 0x34], 0
mov dword [edi + eax + 0x3c], 3
add ecx, 3
mov dword [edi + eax + 0x30], ecx
mov ebx, esi
mov esi, edi
mov edi, dword [esp + 0xc]
inc dword [esp + 0x6c]
inc dword [esp + 0x50]
dec dword [esp + 0xc0]
inc dword [esp + 0xd4]
inc dword [esp + 0xa0]
add dword [esp + 0x88], 0x10
mov eax, dword [esp + 0x70]
cmp eax, dword [esp + 0x28]
jge 0x499d9d
mov ecx, eax
mov eax, dword [esp + 0x34]
add eax, ecx
mov dword [esp + 0x48], eax
cmp eax, dword [esp + 0xbc]
ja 0x499d9d
lea eax, [ecx + 1]
mov dword [esp + 0x70], eax
shl eax, 4
mov dword [esp + 0x74], ecx
shl ecx, 4
mov edx, dword [esi + eax]
mov dword [esp + 0xe4], ecx
mov ecx, dword [esi + ecx]
cmp dword [esp + 0xf8], 0xc
jne 0x4989c7
mov dword [esp + 0xd0], eax
mov dword [esp + 0xdc], edx
cmp edx, ecx
jg 0x497e27
lea eax, [ecx + 3]
mov edx, dword [esp + 0xe4]
cmp dword [edx + esi + 0x40], eax
jl 0x497d89
mov dword [esp + 0xd8], ecx
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x58]
lea edx, [eax + edi]
cmp dword [esp + 0xb8], edx
lea eax, [eax + edi - 0xffff]
cmova eax, dword [esp + 0xb0]
mov dword [esp + 0x24], eax
mov eax, dword [ecx]
mov dword [esp + 4], eax
mov ecx, dword [ebx + 0x40014]
mov dword [esp + 0x44], edx
cmp ecx, edx
jae 0x497ec1
mov edx, dword [esp + 0x6c]
sub edx, ecx
mov eax, ecx
test dl, 1
je 0x497ea8
mov eax, dword [esp + 0x38]
imul eax, dword [eax + ecx], 0x9e3779b1
shr eax, 0x11
mov edx, ecx
sub edx, dword [ebx + eax*4]
cmp edx, 0xffff
mov esi, 0xffff
cmovae edx, esi
movzx esi, cx
mov word [ebx + esi*2 + 0x20000], dx
mov dword [ebx + eax*4], ecx
lea eax, [ecx + 1]
mov edx, dword [esp + 0x114]
mov esi, dword [esp + 0x50]
add edx, esi
add ecx, dword [esp + 0x58]
cmp edx, ecx
jne 0x499562
mov eax, dword [esp + 0x44]
mov dword [ebx + 0x40014], eax
mov esi, dword [esp + 0x48]
imul ebp, dword [esi], 0x9e3779b1
shr ebp, 0x11
lea eax, [esi + 4]
mov dword [esp + 0x80], eax
mov edx, dword [esp + 4]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
xor edx, eax
lea eax, [esi + 8]
mov dword [esp + 0xb4], eax
or edx, ecx
sete byte [esp + 0x84]
mov dword [esp + 0xa8], 0
mov edx, 3
mov eax, dword [esp + 0x40]
test eax, eax
mov dword [esp + 0xf4], ebp
jle 0x4995e6
mov ebp, dword [ebx + ebp*4]
mov esi, eax
mov ecx, ebp
mov dword [esp], ebp
cmp ebp, dword [esp + 0x24]
jb 0x499675
mov ebp, eax
xor ecx, ecx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x5c], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0xa8], 0
nop dword [eax]
cmp byte [esp + 0x60], 0
je 0x497f87
mov eax, dword [esp + 0x44]
sub eax, dword [esp]
cmp eax, 8
jb 0x498060
mov esi, edi
mov eax, dword [esp]
sub esi, eax
jbe 0x498000
cmp eax, dword [esp + 0xcc]
ja 0x498060
mov dword [esp + 0x14], edx
sub eax, dword [esp + 0xb0]
add eax, dword [esp + 0x3c]
mov edx, dword [esp + 4]
cmp dword [eax], edx
jne 0x49827b
mov dword [esp + 0x18], ecx
add esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x54]
cmp esi, ecx
mov edi, esi
cmova edi, ecx
lea edx, [eax + 4]
mov dword [esp + 8], edi
lea ebp, [edi - 3]
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
jbe 0x498953
mov edi, dword [ecx]
xor edi, dword [edx]
je 0x498381
tzcnt eax, edi
shr eax, 3
jmp 0x4983f4
mov esi, eax
mov eax, dword [esp + 0x38]
add esi, eax
mov eax, dword [esp + 0x48]
movzx eax, word [eax + edx - 1]
cmp ax, word [edx + esi - 1]
jne 0x498060
mov eax, dword [esp + 4]
cmp dword [esi], eax
jne 0x498060
mov dword [esp + 0x14], edx
lea eax, [esi + 4]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x10], edx
jbe 0x498984
mov edx, dword [edx]
xor edx, dword [eax]
je 0x498580
mov ebx, ecx
mov ecx, ebp
mov ebp, edi
tzcnt edx, edx
shr edx, 3
mov eax, dword [esp + 0x14]
jmp 0x49868c
mov ebx, ecx
mov ecx, ebp
mov ebp, edi
mov edi, edx
xor edx, edx
mov eax, dword [esp + 0x1c]
lea esi, [eax - 1]
mov dword [esp + 0x4c], edx
cmp edx, edi
mov edx, edi
mov dword [esp + 0x2c], esi
jne 0x498130
mov eax, dword [esp]
add eax, edx
cmp eax, dword [esp + 0x44]
mov edi, ebp
ja 0x498140
mov eax, dword [esp + 0x4c]
cmp eax, 4
jl 0x498150
mov dword [esp + 0x14], edx
add eax, 0xfffffffd
mov dword [esp + 8], eax
xor esi, esi
mov edi, 0x10
mov eax, 1
mov ecx, ebx
mov ebp, dword [esp]
nop dword [eax]
mov edx, eax
lea eax, [esi + ebp]
movzx eax, ax
mov ebx, dword [esp + 0x20]
movzx eax, word [ebx + eax*2 + 0x20000]
lea ebx, [edi + 1]
sar edi, 4
cmp edx, eax
cmova eax, edx
mov edx, 0x10
cmovb ebx, edx
cmovb ecx, esi
add esi, edi
mov edi, ebx
cmp esi, dword [esp + 8]
jl 0x4980c0
mov dword [esp + 0x18], ecx
cmp eax, 1
ja 0x498245
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
mov eax, dword [esp]
mov ecx, dword [esp + 0x18]
movzx eax, ax
cmp word [ebx + eax*2 + 0x20000], 1
je 0x498171
jmp 0x498470
mov esi, dword [esp + 0x24]
mov eax, dword [esp]
mov edi, ebp
jmp 0x498147
mov esi, dword [esp + 0x24]
mov eax, dword [esp]
mov ebp, ecx
jmp 0x498159
mov ebp, ecx
mov esi, dword [esp + 0x24]
mov eax, dword [esp]
mov ecx, ebx
mov ebx, dword [esp + 0x20]
movzx eax, ax
cmp word [ebx + eax*2 + 0x20000], 1
jne 0x498470
test ecx, ecx
jne 0x498470
cmp dword [esp + 0x5c], 0
mov eax, dword [esp]
je 0x4981c5
mov dword [esp + 0x18], ecx
mov ecx, ebx
mov ebx, esi
cmp dword [esp + 0x5c], 2
jne 0x498374
lea esi, [eax - 1]
cmp esi, ebx
jb 0x498374
mov ecx, edi
mov edi, ebp
mov ebp, eax
mov eax, ecx
sub eax, ebp
mov dword [esp + 0x5c], 2
cmp eax, 3
jae 0x49828c
mov ebp, edi
mov eax, ecx
jmp 0x498452
mov dword [esp + 0x5c], 1
cmp byte [esp + 0x84], 0
je 0x498470
mov dword [esp + 0x14], edx
mov ebp, dword [esp + 0xa0]
mov edx, dword [esp + 0x80]
mov eax, edx
cmp dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
jbe 0x498962
nop dword [eax]
mov edx, dword [eax]
xor edx, dword [esp + 4]
jne 0x498338
add eax, 4
add ebp, 4
cmp eax, dword [esp + 0x10]
jb 0x498200
mov edi, dword [esp + 0x54]
cmp eax, edi
jae 0x498977
sub edi, ebp
lea esi, [eax + edi]
mov edx, dword [esp + 4]
cmp byte [eax], dl
jne 0x4988f5
inc eax
shr edx, 8
dec edi
jne 0x49822d
mov ecx, ebx
mov eax, esi
jmp 0x4988f7
mov ebp, dword [esp]
cmp eax, ebp
mov edx, 0
cmova eax, edx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
ja 0x49966d
sub ebp, eax
mov edx, dword [esp + 0x4c]
mov eax, ebp
mov ebp, ecx
mov ecx, dword [esp + 0x18]
jmp 0x498486
mov ebx, ecx
mov ecx, ebp
mov ebp, edi
xor edx, edx
mov edi, dword [esp + 0x14]
jmp 0x49806a
mov dword [esp + 0x14], edx
cmp esi, ecx
mov eax, ecx
mov edx, dword [esp + 0x38]
cmovb edx, dword [esp + 0x64]
mov ebp, dword [esp + 4]
cmp dword [edx + esi], ebp
jne 0x49844a
lea ecx, [edx + esi]
mov dword [esp + 8], esi
cmp esi, eax
mov esi, dword [esp + 0x54]
cmovb esi, dword [esp + 0xc4]
mov dword [esp + 0x4c], ecx
lea eax, [ecx + 4]
mov dword [esp + 0x18], esi
add esi, 0xfffffffd
mov ecx, eax
cmp esi, eax
mov ebp, dword [esp + 0x8c]
jbe 0x498306
mov ecx, dword [esp]
lea edi, [ecx + edx]
add edi, 3
mov ecx, eax
nop word cs:[eax + eax]
mov ebx, dword [ecx]
xor ebx, dword [esp + 4]
jne 0x4984ab
add ecx, 4
add edi, 4
cmp ecx, esi
jb 0x4982f0
mov esi, dword [esp + 0x18]
cmp ecx, esi
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x4c]
jae 0x4984bc
sub esi, ecx
mov ebx, dword [esp + 4]
cmp byte [ecx], bl
jne 0x4984bc
inc ecx
shr ebx, 8
dec esi
jne 0x498320
mov ecx, dword [esp + 0x18]
jmp 0x4984bc
mov ecx, ebx
mov ebx, esi
tzcnt eax, edx
shr eax, 3
add ebp, eax
mov edx, dword [esp + 0x14]
sub ebp, dword [esp + 0x80]
add ebp, 4
mov dword [esp + 0x8c], ebp
mov dword [esp + 0x5c], 2
mov ebp, dword [esp + 0x40]
mov eax, dword [esp]
cmp dword [esp + 0x5c], 2
je 0x498196
mov esi, ebx
mov ebx, ecx
mov ecx, dword [esp + 0x18]
jmp 0x498470
add eax, 8
mov edx, eax
mov eax, dword [esp + 0xb4]
cmp eax, ebp
jae 0x4983b3
mov edi, dword [esp + 0xc0]
add edi, eax
nop word [eax + eax]
mov ebx, dword [eax]
xor ebx, dword [edx]
jne 0x4983eb
add eax, 4
add edx, 4
add edi, 4
cmp eax, ebp
jb 0x4983a0
mov ecx, dword [esp + 8]
lea edi, [ecx - 1]
cmp eax, edi
jae 0x4983cc
movzx edi, word [edx]
cmp di, word [eax]
jne 0x4983cc
add eax, 2
add edx, 2
mov edi, dword [esp + 0xc]
cmp eax, dword [esp + 8]
jae 0x4983e2
movzx edx, byte [edx]
xor ebx, ebx
cmp dl, byte [eax]
sete bl
add eax, ebx
sub eax, dword [esp + 0x80]
jmp 0x4983f8
tzcnt eax, ebx
shr eax, 3
add eax, edi
mov edi, dword [esp + 0xc]
lea edx, [eax + 4]
mov dword [esp + 0x4c], edx
cmp esi, dword [esp + 0x54]
jae 0x498541
mov edx, dword [esp + 0x48]
add eax, edx
add eax, 4
mov ecx, dword [esp + 8]
cmp eax, ecx
jne 0x498566
mov edx, dword [esp + 0x58]
mov esi, edx
mov eax, ecx
cmp dword [esp + 0x10], ecx
jbe 0x4985ed
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x4985e3
tzcnt eax, eax
shr eax, 3
mov esi, dword [esp + 0x14]
jmp 0x4986a6
mov ebp, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov esi, ebx
mov ebx, ecx
mov ecx, edi
mov edi, eax
nop word cs:[eax + eax]
mov eax, dword [esp]
add eax, ecx
movzx eax, ax
movzx eax, word [ebx + eax*2 + 0x20000]
sub dword [esp], eax
mov eax, dword [esp]
cmp eax, esi
jb 0x499671
mov dword [esp], eax
cmp dword [esp + 0x1c], 1
mov esi, dword [esp + 0x2c]
mov eax, esi
mov dword [esp + 0x1c], esi
jg 0x497f70
jmp 0x499675
tzcnt ecx, ebx
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x8c], ebp
sub ecx, eax
lea ebp, [ecx + 4]
cmp dword [esp + 8], edi
mov esi, dword [esp + 0x58]
jae 0x4986de
lea eax, [edx + ebp]
cmp eax, dword [esp + 0xc4]
jne 0x4986f1
shl ecx, 3
mov eax, dword [esp + 4]
rol eax, cl
cmp dword [esp + 0x10], esi
jbe 0x4989b4
mov ecx, esi
mov ebx, esi
nop dword [eax]
mov esi, dword [ecx]
xor esi, eax
jne 0x4986e2
add ecx, 4
add ebx, 4
cmp ecx, dword [esp + 0x10]
jb 0x498500
cmp ecx, dword [esp + 0x54]
jae 0x4986eb
mov esi, dword [esp + 0x54]
sub esi, ebx
lea edi, [ecx + esi]
cmp byte [ecx], al
jne 0x498536
inc ecx
shr eax, 8
dec esi
jne 0x498529
mov ecx, edi
mov ebx, ecx
mov edx, dword [esp + 0x4c]
jmp 0x4986eb
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x4c]
mov ebp, edi
mov ecx, edx
cmp edx, esi
jg 0x4986bc
mov edi, esi
mov edx, ecx
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x18]
jmp 0x49806a
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x4c]
mov edi, dword [esp + 0xc]
mov ebp, edi
mov ecx, edx
cmp edx, esi
jg 0x4986bc
jmp 0x498555
lea eax, [esi + 8]
mov ebx, dword [esp + 0xb4]
cmp ebx, dword [esp + 0x10]
jae 0x4985b9
mov edx, dword [esp + 0xc0]
lea ebp, [edx + ebx]
mov edx, dword [esp + 0x14]
nop
mov edi, dword [ebx]
xor edi, dword [eax]
jne 0x498677
add ebx, 4
add eax, 4
add ebp, 4
cmp ebx, dword [esp + 0x10]
jb 0x4985a0
cmp ebx, dword [esp + 0xec]
jae 0x498906
movzx edi, word [eax]
cmp di, word [ebx]
mov edx, ebx
mov ebp, dword [esp + 0x40]
jne 0x49890c
add edx, 2
add eax, 2
jmp 0x49890c
lea eax, [ecx + 4]
mov esi, dword [esp + 0xf0]
cmp eax, dword [esp + 0x10]
jae 0x49899e
mov edi, dword [esp + 0xd4]
sub edi, dword [esp]
mov edx, dword [esp + 0x100]
cmp edx, edi
cmovb edi, edx
mov ebp, eax
sub ebp, edi
mov edx, dword [esp + 0x14]
nop word cs:[eax + eax]
mov edi, dword [eax]
xor edi, dword [esi]
jne 0x49869b
add eax, 4
add esi, 4
add ebp, 4
cmp eax, dword [esp + 0x10]
jb 0x498620
cmp eax, dword [esp + 0xec]
jae 0x49864c
movzx edi, word [esi]
cmp di, word [eax]
jne 0x49864c
add eax, 2
add esi, 2
mov edi, dword [esp + 0xc]
cmp eax, dword [esp + 0x54]
jae 0x49866f
movzx ecx, byte [esi]
mov byte [esp + 0x2c], cl
xor ebx, ebx
movzx ecx, byte [esp + 0x2c]
cmp cl, byte [eax]
sete bl
add eax, ebx
mov edx, dword [esp + 0x14]
mov esi, edx
sub eax, dword [esp + 8]
jmp 0x4986aa
mov ebx, ecx
mov eax, edx
tzcnt edx, edi
shr edx, 3
add edx, ebp
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0xc]
add edx, 4
mov edi, eax
cmp edx, eax
jle 0x49806a
jmp 0x4986d0
mov esi, edx
tzcnt eax, edi
shr eax, 3
add eax, ebp
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x4c]
add edx, eax
mov ebp, edi
mov ecx, edx
cmp edx, esi
jle 0x498555
mov eax, dword [esp + 0x38]
mov edx, dword [esp]
lea esi, [eax + edx]
mov edx, ecx
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0xa8], esi
mov edi, edx
jmp 0x49806a
mov eax, esi
jmp 0x4986f5
tzcnt eax, esi
shr eax, 3
add ebx, eax
sub ebp, dword [esp + 0x58]
add ebp, ebx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 4]
mov dword [esp + 0xa4], ecx
lea esi, [eax + 4]
mov edi, edx
nop word cs:[eax + eax]
mov ecx, edi
cmp edi, esi
jb 0x498722
lea edi, [ecx - 4]
mov ebx, dword [esp + 4]
cmp dword [ecx - 4], ebx
je 0x498710
cmp ecx, eax
mov dword [esp + 0x18], ebp
jbe 0x498995
lea esi, [esp + 0xa7]
mov edi, dword [esp + 0xc]
nop dword [eax]
movzx ebx, byte [ecx - 1]
cmp bl, byte [esi]
jne 0x498750
dec ecx
dec esi
cmp ecx, eax
ja 0x498740
mov ecx, eax
mov eax, dword [esp + 0x4c]
mov edx, eax
sub edx, ecx
mov ebp, edi
mov ecx, dword [esp + 8]
cmp ecx, edi
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
jb 0x49880b
sub eax, edx
cmp eax, dword [esp + 0x58]
jne 0x49880b
cmp ebp, dword [esp + 0xb0]
jbe 0x49880b
mov ecx, edx
neg ecx
shl ecx, 3
mov ebx, dword [esp + 4]
rol ebx, cl
mov dword [esp + 0xa4], ebx
mov esi, dword [esp + 0x7c]
mov edi, ebp
nop word cs:[eax + eax]
cmp esi, 4
jl 0x498940
lea ecx, [esi - 4]
mov ebp, dword [esp + 0x3c]
cmp dword [ebp + esi - 4], ebx
mov esi, ecx
je 0x4987b0
mov esi, dword [esp + 0x3c]
add ecx, esi
add ecx, 4
lea esi, [esp + 0xa7]
nop dword [eax + eax]
movzx ebx, byte [ecx - 1]
cmp bl, byte [esi]
jne 0x4987f4
dec ecx
dec esi
cmp ecx, dword [esp + 0x3c]
ja 0x4987e0
mov ecx, dword [esp + 0x3c]
add edx, dword [esp + 0xc4]
sub edx, ecx
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 8]
jmp 0x49880d
mov edi, ebp
mov ebp, ecx
sub ebp, edx
cmp ebp, esi
cmovbe ebp, esi
mov eax, ecx
mov dword [esp], ebp
sub eax, ebp
mov edx, dword [esp + 0x18]
add eax, edx
mov esi, dword [esp + 0x8c]
cmp edx, esi
ja 0x49885f
cmp eax, esi
jb 0x49885f
sub ecx, esi
add edx, ecx
mov eax, edx
not eax
add eax, edi
cmp eax, 3
cmovb edx, edi
xor ecx, ecx
mov dword [esp + 0x5c], 2
mov eax, edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x24]
jmp 0x498486
mov ecx, ebx
mov edx, dword [esp]
not edx
add edx, edi
mov dword [esp + 0x5c], 2
cmp edx, 3
mov ebp, dword [esp + 0x40]
jae 0x49888e
mov ebx, edi
mov eax, edi
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x24]
mov ebx, ecx
xor ecx, ecx
jmp 0x498486
mov edx, dword [esp + 0x8c]
cmp eax, edx
cmovae eax, edx
mov edx, dword [esp + 0x14]
cmp edx, eax
mov esi, dword [esp + 0x24]
jae 0x4988cf
mov edx, dword [esp + 0x44]
sub edx, dword [esp]
cmp edx, 0xffff
mov ebx, ecx
ja 0x499d8b
mov edx, dword [esp + 0x38]
mov ecx, dword [esp]
add edx, ecx
mov dword [esp + 0xa8], edx
mov edx, eax
jmp 0x4988d6
mov eax, dword [esp]
mov ebx, ecx
mov ecx, eax
movzx eax, cx
movzx eax, word [ebx + eax*2 + 0x20000]
sub ecx, eax
mov eax, ecx
mov ecx, 0
jae 0x498486
jmp 0x499671
mov ecx, ebx
mov ebp, eax
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x24]
jmp 0x498345
mov edx, ebx
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
cmp edx, dword [esp + 0x54]
jae 0x49892e
movzx eax, byte [eax]
mov dword [esp + 0x18], ecx
mov ecx, ebp
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov ebx, dword [esp + 0x18]
jmp 0x498932
mov ebx, ecx
mov ecx, ebp
mov ebp, edi
sub edx, dword [esp + 0x80]
jmp 0x49804f
mov ecx, dword [esp + 0x3c]
add ecx, esi
test esi, esi
jg 0x4987d1
jmp 0x4987f4
mov eax, ecx
cmp eax, ebp
jb 0x498391
jmp 0x4983b3
mov eax, dword [esp + 0x80]
mov ebp, eax
mov edi, dword [esp + 0x54]
cmp eax, edi
jb 0x498224
mov ecx, ebx
mov ebx, esi
mov edi, dword [esp + 0xc]
jmp 0x498345
mov ebx, edx
cmp ebx, dword [esp + 0x10]
jb 0x498590
jmp 0x4985b9
mov edi, dword [esp + 0xc]
jmp 0x498750
mov edx, dword [esp + 0x14]
cmp eax, dword [esp + 0xec]
jb 0x49863e
jmp 0x49864c
mov ecx, esi
mov ebx, esi
cmp ecx, dword [esp + 0x54]
jb 0x498520
jmp 0x4986eb
cmp edx, ecx
jle 0x497d89
mov dword [esp + 0xdc], edx
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd8], ecx
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [esp + 0x58]
lea edx, [eax + edi]
cmp dword [esp + 0xb8], edx
lea eax, [eax + edi - 0xffff]
cmova eax, dword [esp + 0xb0]
mov dword [esp + 0x4c], eax
mov eax, dword [ecx]
mov dword [esp + 4], eax
mov ecx, dword [ebx + 0x40014]
mov dword [esp + 0x24], edx
cmp ecx, edx
jae 0x498a70
mov edx, dword [esp + 0x6c]
sub edx, ecx
mov eax, ecx
test dl, 1
je 0x498a5e
mov eax, dword [esp + 0x38]
imul eax, dword [eax + ecx], 0x9e3779b1
shr eax, 0x11
mov edx, ecx
sub edx, dword [ebx + eax*4]
cmp edx, 0xffff
mov esi, 0xffff
cmovae edx, esi
movzx esi, cx
mov word [ebx + esi*2 + 0x20000], dx
mov dword [ebx + eax*4], ecx
lea eax, [ecx + 1]
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x50]
add edx, esi
cmp edx, ecx
jne 0x4995ed
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x40014], eax
mov esi, dword [esp + 0x48]
imul ebp, dword [esi], 0x9e3779b1
sub ecx, dword [esp + 0x74]
mov dword [esp + 0xa8], ecx
shr ebp, 0x11
mov edx, dword [esp + 4]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
xor edx, eax
lea eax, [esi + 4]
mov dword [esp + 0x80], eax
or edx, ecx
mov edx, dword [esp + 0xa8]
lea eax, [esi + 8]
mov dword [esp + 0xf4], eax
sete byte [esp + 0xb4]
mov dword [esp + 0x8c], 0
mov eax, dword [esp + 0x40]
test eax, eax
mov dword [esp + 0x118], ebp
jle 0x499666
mov ebp, dword [ebx + ebp*4]
mov esi, eax
mov ecx, ebp
mov dword [esp], ebp
cmp ebp, dword [esp + 0x4c]
jb 0x499898
mov ebp, eax
xor ecx, ecx
mov edx, dword [esp + 0xa8]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x5c], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x8c], 0
cmp byte [esp + 0x60], 0
mov dword [esp + 0x1c], ecx
je 0x498b4b
mov eax, dword [esp + 0x24]
sub eax, dword [esp]
cmp eax, 8
jb 0x498c20
mov esi, edi
mov eax, dword [esp]
sub esi, eax
jbe 0x498bc0
cmp eax, dword [esp + 0xcc]
ja 0x498c20
mov dword [esp + 0x18], edx
sub eax, dword [esp + 0xb0]
add eax, dword [esp + 0x3c]
mov edx, dword [esp + 4]
cmp dword [eax], edx
jne 0x498e3f
add esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x54]
cmp esi, ecx
mov edi, esi
cmova edi, ecx
lea edx, [eax + 4]
mov dword [esp + 8], edi
lea ebp, [edi - 3]
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
jbe 0x4994b9
mov edi, dword [ecx]
xor edi, dword [edx]
je 0x498f25
tzcnt eax, edi
shr eax, 3
jmp 0x498f88
mov esi, eax
mov eax, dword [esp + 0x38]
add esi, eax
mov eax, dword [esp + 0x48]
movzx eax, word [eax + edx - 1]
cmp ax, word [edx + esi - 1]
jne 0x498c20
mov eax, dword [esp + 4]
cmp dword [esi], eax
jne 0x498c20
mov dword [esp + 0x18], edx
lea eax, [esi + 4]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x10], edx
jbe 0x4994e8
mov edx, dword [edx]
xor edx, dword [eax]
je 0x4990cd
mov ecx, ebp
mov ebp, edi
tzcnt edx, edx
shr edx, 3
mov eax, dword [esp + 0x18]
jmp 0x4991c8
mov ecx, ebp
mov ebp, edi
mov edi, edx
xor edx, edx
mov eax, dword [esp + 0x2c]
lea esi, [eax - 1]
mov dword [esp + 0x44], edx
cmp edx, edi
mov edx, edi
mov dword [esp + 0x14], esi
jne 0x498ce0
mov eax, dword [esp]
add eax, edx
cmp eax, dword [esp + 0x24]
mov edi, ebp
ja 0x498cf0
mov eax, dword [esp + 0x44]
cmp eax, 4
jl 0x498d10
mov dword [esp + 0x18], edx
add eax, 0xfffffffd
mov dword [esp + 8], eax
xor esi, esi
mov edi, 0x10
mov eax, 1
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp]
nop dword [eax]
mov edx, eax
lea eax, [esi + ebp]
movzx eax, ax
mov ebx, dword [esp + 0x20]
movzx eax, word [ebx + eax*2 + 0x20000]
lea ebx, [edi + 1]
sar edi, 4
cmp edx, eax
cmova eax, edx
mov edx, 0x10
cmovb ebx, edx
cmovb ecx, esi
add esi, edi
mov edi, ebx
cmp esi, dword [esp + 8]
jl 0x498c80
mov dword [esp + 0x1c], ecx
cmp eax, 1
ja 0x498e09
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 0x18]
jmp 0x498d16
mov esi, dword [esp + 0x4c]
mov eax, dword [esp]
mov edi, ebp
jmp 0x498cf7
mov esi, dword [esp + 0x4c]
mov eax, dword [esp]
mov ebp, ecx
mov ecx, dword [esp + 0x1c]
movzx eax, ax
cmp word [ebx + eax*2 + 0x20000], 1
je 0x498d2f
jmp 0x499000
mov ebp, ecx
mov esi, dword [esp + 0x4c]
mov eax, dword [esp]
mov ecx, dword [esp + 0x1c]
movzx eax, ax
cmp word [ebx + eax*2 + 0x20000], 1
jne 0x499000
test ecx, ecx
jne 0x499000
cmp dword [esp + 0x5c], 0
mov eax, dword [esp]
je 0x498d7d
mov dword [esp + 0x1c], ecx
mov ecx, esi
cmp dword [esp + 0x5c], 2
jne 0x498f1a
lea esi, [eax - 1]
cmp esi, ecx
jb 0x498f1a
mov ebp, eax
mov eax, edi
sub eax, ebp
mov dword [esp + 0x5c], 2
cmp eax, 3
jae 0x498e4e
mov ebp, dword [esp + 0x40]
jmp 0x498fec
mov dword [esp + 0x5c], 1
cmp byte [esp + 0xb4], 0
je 0x499000
mov dword [esp + 0x18], edx
mov ebp, dword [esp + 0xa0]
mov edx, dword [esp + 0x80]
mov eax, edx
cmp dword [esp + 0x10], edx
mov dword [esp + 0x1c], ecx
jbe 0x4994c8
nop word cs:[eax + eax]
mov edx, dword [eax]
xor edx, dword [esp + 4]
jne 0x498ee0
add eax, 4
add ebp, 4
cmp eax, dword [esp + 0x10]
jb 0x498dc0
mov edi, dword [esp + 0x54]
cmp eax, edi
jae 0x4994dd
sub edi, ebp
lea esi, [eax + edi]
mov edx, dword [esp + 4]
cmp byte [eax], dl
jne 0x498dfa
inc eax
shr edx, 8
dec edi
jne 0x498ded
mov eax, esi
mov ebp, eax
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x4c]
jmp 0x498eeb
mov ebp, dword [esp]
cmp eax, ebp
mov edx, 0
cmova eax, edx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x4c]
ja 0x499890
sub ebp, eax
mov edx, dword [esp + 0x44]
mov eax, ebp
mov ebp, ecx
mov ecx, dword [esp + 0x1c]
jmp 0x499016
mov ecx, ebp
mov ebp, edi
xor edx, edx
mov edi, dword [esp + 0x18]
jmp 0x498c28
mov dword [esp + 0x18], edx
cmp esi, edi
mov eax, edi
mov edi, dword [esp + 0x38]
cmovb edi, dword [esp + 0x64]
mov edx, dword [esp + 4]
cmp dword [edi + esi], edx
mov ebp, dword [esp + 0x40]
jne 0x498fe6
lea edx, [edi + esi]
mov dword [esp + 8], esi
cmp esi, eax
mov ebp, dword [esp + 0x54]
cmovb ebp, dword [esp + 0xc4]
lea eax, [edx + 4]
lea esi, [ebp - 3]
mov ecx, eax
cmp esi, eax
jbe 0x498eb6
mov ecx, dword [esp]
add edi, ecx
add edi, 3
mov ecx, eax
nop dword [eax + eax]
mov ebx, dword [ecx]
xor ebx, dword [esp + 4]
jne 0x49903b
add ecx, 4
add edi, 4
cmp ecx, esi
jb 0x498ea0
cmp ecx, ebp
mov edi, dword [esp + 0xc]
jae 0x499048
mov esi, ebp
sub esi, ecx
mov ebx, dword [esp + 4]
cmp byte [ecx], bl
jne 0x499048
inc ecx
shr ebx, 8
dec esi
jne 0x498eca
mov ecx, ebp
jmp 0x499048
mov ecx, esi
tzcnt eax, edx
shr eax, 3
add ebp, eax
mov edx, dword [esp + 0x18]
sub ebp, dword [esp + 0x80]
add ebp, 4
mov dword [esp + 0x84], ebp
mov dword [esp + 0x5c], 2
mov ebp, dword [esp + 0x40]
mov eax, dword [esp]
cmp dword [esp + 0x5c], 2
je 0x498d52
mov esi, ecx
mov ecx, dword [esp + 0x1c]
jmp 0x499000
add eax, 8
mov edx, eax
mov eax, dword [esp + 0xf4]
cmp eax, ebp
jae 0x498f53
mov edi, dword [esp + 0xc0]
add edi, eax
nop
mov ebx, dword [eax]
xor ebx, dword [edx]
jne 0x498f7f
add eax, 4
add edx, 4
add edi, 4
cmp eax, ebp
jb 0x498f40
mov edi, dword [esp + 8]
dec edi
cmp eax, edi
jae 0x499404
movzx edi, word [edx]
cmp di, word [eax]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
jne 0x49940c
add eax, 2
add edx, 2
jmp 0x49940c
tzcnt eax, ebx
shr eax, 3
add eax, edi
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
lea ecx, [eax + 4]
mov dword [esp + 0x44], ecx
cmp esi, dword [esp + 0x54]
jae 0x49943e
mov edx, dword [esp + 0x48]
add eax, edx
add eax, 4
mov ecx, dword [esp + 8]
cmp eax, ecx
jne 0x49943e
mov edx, dword [esp + 0x58]
mov esi, edx
mov eax, ecx
cmp dword [esp + 0x10], ecx
jbe 0x499141
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x499137
tzcnt eax, eax
shr eax, 3
mov esi, dword [esp + 0x18]
jmp 0x4991f1
mov edi, eax
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov esi, ecx
mov ecx, eax
nop word cs:[eax + eax]
mov eax, dword [esp]
add eax, ecx
movzx eax, ax
movzx eax, word [ebx + eax*2 + 0x20000]
sub dword [esp], eax
mov eax, dword [esp]
cmp eax, esi
jb 0x499894
mov dword [esp], eax
cmp dword [esp + 0x2c], 1
mov esi, dword [esp + 0x14]
mov eax, esi
mov dword [esp + 0x2c], esi
jg 0x498b30
jmp 0x499898
tzcnt ecx, ebx
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0xc]
sub ecx, eax
lea ebp, [ecx + 4]
cmp dword [esp + 8], edi
mov esi, dword [esp + 0x58]
jae 0x499212
lea eax, [edx + ebp]
cmp eax, dword [esp + 0xc4]
jne 0x499229
shl ecx, 3
mov eax, dword [esp + 4]
rol eax, cl
cmp dword [esp + 0x10], esi
jbe 0x49954f
mov ecx, esi
mov ebx, esi
nop word cs:[eax + eax]
mov esi, dword [ecx]
xor esi, eax
jne 0x49921a
add ecx, 4
add ebx, 4
cmp ecx, dword [esp + 0x10]
jb 0x499090
cmp ecx, dword [esp + 0x54]
jae 0x499223
mov esi, dword [esp + 0x54]
sub esi, ebx
lea edi, [ecx + esi]
cmp byte [ecx], al
jne 0x4990c6
inc ecx
shr eax, 8
dec esi
jne 0x4990b9
mov ecx, edi
mov ebx, ecx
jmp 0x499223
lea eax, [esi + 8]
mov ebx, dword [esp + 0xf4]
cmp ebx, dword [esp + 0x10]
jae 0x499109
mov edx, dword [esp + 0xc0]
lea ebp, [edx + ebx]
mov edx, dword [esp + 0x18]
nop dword [eax + eax]
mov edi, dword [ebx]
xor edi, dword [eax]
jne 0x4991b1
add ebx, 4
add eax, 4
add ebp, 4
cmp ebx, dword [esp + 0x10]
jb 0x4990f0
cmp ebx, dword [esp + 0xec]
jae 0x499472
movzx edi, word [eax]
mov edx, ebx
cmp di, word [ebx]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
jne 0x49947c
add edx, 2
add eax, 2
jmp 0x49947c
lea eax, [ecx + 4]
mov esi, dword [esp + 0xf0]
cmp eax, dword [esp + 0x10]
jae 0x499502
mov edi, dword [esp + 0xd4]
sub edi, dword [esp]
mov edx, dword [esp + 0x100]
cmp edx, edi
cmovb edi, edx
mov ebp, eax
sub ebp, edi
mov edx, dword [esp + 0x18]
nop dword [eax]
mov edi, dword [eax]
xor edi, dword [esi]
jne 0x4991da
add eax, 4
add esi, 4
add ebp, 4
cmp eax, dword [esp + 0x10]
jb 0x499170
cmp eax, dword [esp + 0xec]
jae 0x499513
movzx edi, word [esi]
cmp di, word [eax]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
jne 0x49951b
add eax, 2
add esi, 2
jmp 0x49951b
mov eax, edx
tzcnt edx, edi
shr edx, 3
add edx, ebp
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0xc]
add edx, 4
mov edi, eax
cmp edx, eax
jle 0x498c28
jmp 0x499464
mov esi, edx
tzcnt eax, edi
shr eax, 3
add eax, ebp
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
mov ecx, ebp
mov edx, dword [esp + 0x44]
add edx, eax
mov ebp, edi
mov dword [esp + 0x44], edx
cmp edx, esi
jg 0x499456
mov edi, esi
mov edx, dword [esp + 0x44]
jmp 0x498c28
mov dword [esp + 0x1c], ebp
mov eax, esi
jmp 0x499231
tzcnt eax, esi
shr eax, 3
add ebx, eax
sub ebp, dword [esp + 0x58]
add ebp, ebx
mov dword [esp + 0x1c], ebp
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 4]
mov dword [esp + 0xa4], ecx
lea esi, [eax + 4]
mov ebp, edx
mov edi, edx
nop word cs:[eax + eax]
mov ecx, edi
cmp edi, esi
jb 0x499262
lea edi, [ecx - 4]
mov edx, dword [esp + 4]
cmp dword [ecx - 4], edx
je 0x499250
cmp ecx, eax
jbe 0x4994f9
lea esi, [esp + 0xa7]
mov edi, dword [esp + 0xc]
nop word cs:[eax + eax]
movzx ebx, byte [ecx - 1]
cmp bl, byte [esi]
jne 0x499290
dec ecx
dec esi
cmp ecx, eax
ja 0x499280
mov ecx, eax
mov edx, ebp
sub edx, ecx
mov esi, dword [esp + 8]
cmp esi, edi
mov ebx, dword [esp + 0x20]
jb 0x499325
sub ebp, edx
cmp ebp, dword [esp + 0x58]
jne 0x499325
cmp edi, dword [esp + 0xb0]
jbe 0x499325
mov ecx, edx
neg ecx
shl ecx, 3
mov ebx, dword [esp + 4]
rol ebx, cl
mov dword [esp + 0xa4], ebx
mov esi, dword [esp + 0x7c]
nop dword [eax]
cmp esi, 4
jl 0x4994a6
lea ecx, [esi - 4]
mov ebp, dword [esp + 0x3c]
cmp dword [ebp + esi - 4], ebx
mov esi, ecx
je 0x4992d0
mov esi, dword [esp + 0x3c]
add ecx, esi
add ecx, 4
lea esi, [esp + 0xa7]
nop dword [eax + eax]
movzx ebx, byte [ecx - 1]
cmp bl, byte [esi]
jne 0x499314
dec ecx
dec esi
cmp ecx, dword [esp + 0x3c]
ja 0x499300
mov ecx, dword [esp + 0x3c]
add edx, dword [esp + 0xc4]
sub edx, ecx
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 8]
mov ebp, esi
sub ebp, edx
mov eax, dword [esp + 0x4c]
cmp ebp, eax
cmovbe ebp, eax
mov eax, esi
mov dword [esp], ebp
sub eax, ebp
mov ebp, dword [esp + 0x1c]
add eax, ebp
mov ecx, dword [esp + 0x84]
cmp ebp, ecx
ja 0x49937b
cmp eax, ecx
jb 0x49937b
sub esi, ecx
add ebp, esi
mov eax, ebp
not eax
add eax, edi
cmp eax, 3
cmovb ebp, edi
xor ecx, ecx
mov dword [esp + 0x5c], 2
mov eax, ebp
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x4c]
jmp 0x499016
mov edx, dword [esp]
not edx
add edx, edi
xor ecx, ecx
mov dword [esp + 0x5c], 2
cmp edx, 3
mov ebp, dword [esp + 0x40]
jae 0x4993a4
mov eax, edi
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x4c]
jmp 0x499016
mov edx, dword [esp + 0x84]
cmp eax, edx
cmovae eax, edx
mov edx, dword [esp + 0x18]
cmp edx, eax
mov esi, dword [esp + 0x4c]
jae 0x4993e7
mov edx, dword [esp + 0x24]
sub edx, dword [esp]
cmp edx, 0xffff
ja 0x499d94
mov edx, dword [esp + 0x38]
mov dword [esp + 8], eax
mov eax, dword [esp]
add edx, eax
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 8]
movzx eax, word [esp]
movzx eax, word [ebx + eax*2 + 0x20000]
sub dword [esp], eax
mov eax, dword [esp]
jae 0x499016
jmp 0x499894
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
cmp eax, dword [esp + 8]
jae 0x499426
movzx edx, byte [edx]
mov ecx, ebx
xor ebx, ebx
cmp dl, byte [eax]
sete bl
add eax, ebx
mov ebx, ecx
sub eax, dword [esp + 0x80]
lea ecx, [eax + 4]
mov dword [esp + 0x44], ecx
cmp esi, dword [esp + 0x54]
jb 0x498fa5
mov ecx, ebp
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x44]
mov ebp, edi
mov dword [esp + 0x44], edx
cmp edx, esi
jle 0x499207
mov eax, dword [esp + 0x38]
mov edx, dword [esp]
lea esi, [eax + edx]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x8c], esi
mov edi, edx
jmp 0x498c28
mov edx, ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0xc]
cmp edx, dword [esp + 0x54]
jae 0x49949a
movzx eax, byte [eax]
mov edi, ebx
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov ebx, edi
mov ebp, dword [esp + 0xc]
sub edx, dword [esp + 0x80]
jmp 0x498c0d
mov ecx, dword [esp + 0x3c]
add ecx, esi
test esi, esi
jg 0x4992f1
jmp 0x499314
mov eax, ecx
cmp eax, ebp
jb 0x498f35
jmp 0x498f53
mov eax, dword [esp + 0x80]
mov ebp, eax
mov edi, dword [esp + 0x54]
cmp eax, edi
jb 0x498de4
mov ecx, esi
mov edi, dword [esp + 0xc]
jmp 0x498eeb
mov ebx, edx
cmp ebx, dword [esp + 0x10]
jb 0x4990dd
jmp 0x499109
mov edi, dword [esp + 0xc]
jmp 0x499290
mov edx, dword [esp + 0x18]
cmp eax, dword [esp + 0xec]
jb 0x499192
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0xc]
cmp eax, dword [esp + 0x54]
jae 0x499544
movzx ecx, byte [esi]
mov byte [esp + 0x14], cl
mov esi, ebx
mov edx, ebp
xor ebx, ebx
movzx ecx, byte [esp + 0x14]
cmp cl, byte [eax]
sete bl
add eax, ebx
mov edx, dword [esp + 0x18]
mov ebx, esi
mov esi, edx
sub eax, dword [esp + 8]
jmp 0x4991f1
mov ecx, esi
mov ebx, esi
cmp ecx, dword [esp + 0x54]
jb 0x4990b0
jmp 0x499223
inc eax
jmp 0x499592
movzx esi, ax
mov word [ebx + esi*2 + 0x20000], dx
mov dword [ebx + ecx*4], eax
lea ecx, [eax + 2]
inc eax
cmp eax, dword [esp + 0x6c]
mov eax, ecx
mov edi, dword [esp + 0xc]
je 0x497ec1
lea ecx, [eax - 1]
mov edx, dword [esp + 0x38]
imul edx, dword [edx + eax - 1], 0x9e3779b1
shr edx, 0x11
mov esi, ecx
sub esi, dword [ebx + edx*4]
cmp esi, 0xffff
jb 0x4995b6
mov esi, 0xffff
movzx edi, cx
mov word [ebx + edi*2 + 0x20000], si
mov dword [ebx + edx*4], ecx
mov ecx, dword [esp + 0x38]
imul ecx, dword [ecx + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebx + ecx*4]
cmp edx, 0xffff
jb 0x499570
mov edx, 0xffff
jmp 0x499570
mov esi, eax
jmp 0x499675
inc eax
jmp 0x499612
movzx esi, ax
mov word [ebx + esi*2 + 0x20000], dx
mov dword [ebx + ecx*4], eax
lea ecx, [eax + 2]
inc eax
cmp eax, dword [esp + 0x6c]
mov eax, ecx
mov edi, dword [esp + 0xc]
je 0x498a70
lea ecx, [eax - 1]
mov edx, dword [esp + 0x38]
imul edx, dword [edx + eax - 1], 0x9e3779b1
shr edx, 0x11
mov esi, ecx
sub esi, dword [ebx + edx*4]
cmp esi, 0xffff
jb 0x499636
mov esi, 0xffff
movzx edi, cx
mov word [ebx + edi*2 + 0x20000], si
mov dword [ebx + edx*4], ecx
mov ecx, dword [esp + 0x38]
imul ecx, dword [ecx + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebx + ecx*4]
cmp edx, 0xffff
jb 0x4995f0
mov edx, 0xffff
jmp 0x4995f0
mov esi, eax
jmp 0x499898
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x2c], esi
test esi, esi
mov esi, dword [esp + 0x68]
jle 0x499852
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x44]
mov eax, edx
mov ebp, dword [esp + 0x24]
sub eax, ebp
cmp eax, 0xfffe
ja 0x49984e
mov ecx, dword [esp + 0x94]
mov eax, dword [ecx + 0x40000]
mov edi, dword [ecx + 0x40004]
mov dword [esp + 8], edi
sub eax, edi
mov edi, dword [ecx + 0x4000c]
mov dword [esp + 0x1c], edi
add eax, edi
mov edi, dword [esp + 0xf4]
mov edi, dword [ecx + edi*4]
add ebp, edi
mov dword [esp], eax
sub ebp, eax
mov dword [esp + 0x24], ebp
sub edx, ebp
cmp edx, 0xffff
ja 0x49984e
mov ecx, dword [esp + 8]
sub ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov dword [esp + 8], ecx
jmp 0x499737
mov ebp, dword [esp + 0x24]
movzx eax, di
mov ecx, dword [esp + 0x94]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edi, eax
sub ebp, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x24], ebp
sub eax, ebp
cmp eax, 0x10000
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 8]
jae 0x499852
sub dword [esp + 0x2c], 1
jb 0x499852
mov dword [esp + 0x14], edx
mov eax, dword [esp + 4]
cmp dword [ecx + edi], eax
jne 0x499700
mov ebx, dword [esp]
sub ebx, edi
add ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x54]
cmp ebx, eax
cmova ebx, eax
lea eax, [ecx + edi]
lea ebp, [eax + 4]
lea ecx, [ebx - 3]
mov edx, dword [esp + 0x80]
cmp ecx, edx
jbe 0x49983f
mov esi, dword [edx]
xor esi, dword [ebp]
je 0x499789
tzcnt eax, esi
shr eax, 3
jmp 0x4997e9
add eax, 8
mov ebp, eax
mov eax, dword [esp + 0xb4]
cmp eax, ecx
jae 0x4997c4
mov edx, dword [esp + 0xc0]
lea esi, [edx + eax]
nop word cs:[eax + eax]
mov edx, dword [eax]
xor edx, dword [ebp]
jne 0x4997e0
add eax, 4
add ebp, 4
add esi, 4
cmp eax, ecx
jb 0x4997b0
lea ecx, [ebx - 1]
cmp eax, ecx
jae 0x499821
movzx ecx, word [ebp]
cmp cx, word [eax]
mov esi, dword [esp + 0x68]
jne 0x499825
add eax, 2
add ebp, 2
jmp 0x499825
tzcnt eax, edx
shr eax, 3
add eax, esi
mov esi, dword [esp + 0x68]
add eax, 4
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x24]
add ecx, ebp
mov edx, dword [esp + 0x14]
cmp eax, edx
mov ebx, dword [esp + 0xa8]
cmovg ebx, ecx
mov dword [esp + 0xa8], ebx
cmovg edx, eax
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x20]
jmp 0x499704
mov esi, dword [esp + 0x68]
cmp eax, ebx
jae 0x499836
movzx ecx, byte [ebp]
xor edx, edx
cmp cl, byte [eax]
sete dl
add eax, edx
sub eax, dword [esp + 0x80]
jmp 0x4997ed
mov eax, edx
cmp eax, ecx
jb 0x499799
jmp 0x4997c4
mov edx, dword [esp + 0x14]
cmp edx, 4
jl 0x497d85
lea eax, [edx - 0x13]
cmp eax, 0x12
mov ecx, edx
mov eax, 0x12
cmovb ecx, eax
cmp byte [esp + 0x60], 0
cmove ecx, edx
mov eax, dword [esp + 0xa8]
sub dword [esp + 0x48], eax
cmp ecx, dword [esp + 0x108]
jbe 0x499ac5
jmp 0x49a074
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x14], esi
test esi, esi
mov esi, dword [esp + 0x68]
jle 0x499d77
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x24]
mov eax, edx
mov ebp, dword [esp + 0x4c]
sub eax, ebp
cmp eax, 0xfffe
ja 0x499a76
mov ecx, dword [esp + 0x94]
mov eax, dword [ecx + 0x40000]
mov edi, dword [ecx + 0x40004]
mov dword [esp + 8], edi
sub eax, edi
mov edi, dword [ecx + 0x4000c]
mov dword [esp + 0x1c], edi
add eax, edi
mov edi, dword [esp + 0x118]
mov edi, dword [ecx + edi*4]
add ebp, edi
mov dword [esp], eax
sub ebp, eax
mov dword [esp + 0x4c], ebp
sub edx, ebp
cmp edx, 0xffff
ja 0x499a76
mov ecx, dword [esp + 8]
sub ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x18]
mov dword [esp + 8], ecx
jmp 0x49995e
mov ebp, dword [esp + 0x4c]
movzx eax, di
mov ecx, dword [esp + 0x94]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edi, eax
sub ebp, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x4c], ebp
sub eax, ebp
cmp eax, 0x10000
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 8]
jae 0x499a81
sub dword [esp + 0x14], 1
jb 0x499a81
mov eax, dword [esp + 4]
cmp dword [ecx + edi], eax
jne 0x499924
mov dword [esp + 0x18], edx
mov ebx, dword [esp]
sub ebx, edi
add ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x54]
cmp ebx, eax
cmova ebx, eax
lea eax, [ecx + edi]
lea ebp, [eax + 4]
lea ecx, [ebx - 3]
mov edx, dword [esp + 0x80]
cmp ecx, edx
jbe 0x499a67
mov esi, dword [edx]
xor esi, dword [ebp]
je 0x4999b0
tzcnt eax, esi
shr eax, 3
jmp 0x499a09
add eax, 8
mov ebp, eax
mov eax, dword [esp + 0xf4]
cmp eax, ecx
jae 0x4999e4
mov edx, dword [esp + 0xc0]
lea esi, [edx + eax]
nop word [eax + eax]
mov edx, dword [eax]
xor edx, dword [ebp]
jne 0x499a00
add eax, 4
add ebp, 4
add esi, 4
cmp eax, ecx
jb 0x4999d0
lea ecx, [ebx - 1]
cmp eax, ecx
jae 0x499a41
movzx ecx, word [ebp]
cmp cx, word [eax]
mov esi, dword [esp + 0x68]
jne 0x499a45
add eax, 2
add ebp, 2
jmp 0x499a45
tzcnt eax, edx
shr eax, 3
add eax, esi
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x18]
add eax, 4
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x4c]
add ecx, ebp
cmp eax, edx
mov edx, dword [esp + 0x8c]
cmovg edx, ecx
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x18]
cmovg edx, eax
jmp 0x499928
mov esi, dword [esp + 0x68]
cmp eax, ebx
jae 0x499a56
movzx ecx, byte [ebp]
xor edx, edx
cmp cl, byte [eax]
sete dl
add eax, edx
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
sub eax, dword [esp + 0x80]
jmp 0x499a15
mov eax, edx
cmp eax, ecx
jb 0x4999c0
jmp 0x4999e4
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x18]
cmp edx, eax
jle 0x497d85
lea eax, [edx - 0x13]
cmp eax, 0x12
mov ecx, edx
mov eax, 0x12
cmovb ecx, eax
cmp byte [esp + 0x60], 0
cmove ecx, edx
test ecx, ecx
mov edi, dword [esp + 0xc]
je 0x497d89
mov eax, dword [esp + 0x8c]
sub dword [esp + 0x48], eax
cmp ecx, dword [esp + 0x108]
ja 0x49a074
mov eax, dword [esp + 0x74]
add eax, ecx
cmp eax, 0xfff
jg 0x49a074
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0xe4]
mov esi, dword [esi + eax + 0xc]
lea eax, [esi - 0xf]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea ebp, [esi + 1]
cmp esi, 0xf
lea eax, [edx + esi + 1]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
cmovge esi, eax
mov eax, ebp
cmp ebp, 0xe
jle 0x499b20
mov ebx, dword [esp + 4]
lea eax, [ebx - 0xe]
mul ecx
shr edx, 7
lea eax, [ebx + edx]
add eax, 2
mov ebx, dword [esp + 0xd8]
sub ebx, esi
add eax, ebx
cmp eax, dword [esp + 0xdc]
mov esi, dword [esp + 0x68]
jge 0x499b58
mov ecx, dword [esp + 0xd0]
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 ecx, dword [esp + 4]
lea ebp, [ecx + 2]
mov eax, ebp
cmp ecx, 0xd
jl 0x499b7d
mov edi, dword [esp + 4]
lea eax, [edi - 0xd]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [edi + edx]
add eax, 3
add eax, ebx
mov ecx, dword [esp + 0x74]
lea edx, [ecx + 2]
shl edx, 4
cmp eax, dword [esi + edx]
jge 0x499bbb
mov ecx, dword [esp + 0x68]
lea esi, [ecx + edx]
mov ecx, dword [esp + 0x68]
mov dword [ecx + edx + 8], 1
mov ecx, dword [esp + 0x68]
mov dword [ecx + edx + 4], 0
mov ecx, dword [esp + 0x68]
mov dword [ecx + edx + 0xc], ebp
mov dword [esi], eax
mov esi, dword [esp + 0x68]
mov ecx, dword [esp + 4]
lea eax, [ecx + 3]
mov dword [esp + 0x14], eax
cmp ecx, 0xc
jl 0x499be2
mov edi, dword [esp + 4]
lea eax, [edi - 0xc]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [edi + edx]
add eax, 4
add eax, ebx
mov ebx, dword [esp + 0x74]
lea edx, [ebx + 3]
shl edx, 4
cmp eax, dword [esi + edx]
mov ecx, dword [esp + 0x20]
jge 0x499c2b
mov esi, dword [esp + 0x68]
add esi, edx
mov ebx, dword [esp + 0x68]
mov dword [ebx + edx + 8], 1
mov ebx, dword [esp + 0x68]
mov dword [ebx + edx + 4], 0
mov ebx, dword [esp + 0x68]
mov edi, dword [esp + 0x14]
mov dword [ebx + edx + 0xc], edi
mov ebx, dword [esp + 0x74]
mov dword [esi], eax
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x1c]
cmp edx, 3
jle 0x497d14
mov eax, dword [esp + 4]
sub ebx, eax
shl ebx, 4
add ebx, esi
mov dword [esp + 0x44], ebx
mov ecx, dword [esp + 8]
add ecx, 3
cmp eax, 0xf
mov eax, dword [esp + 0xe4]
mov eax, dword [esi + eax + 8]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
cmovge eax, ecx
mov dword [esp + 0x14], eax
inc eax
mov dword [esp + 0x24], eax
neg edx
mov dword [esp + 0x1c], edx
mov ebx, 5
mov edi, dword [esp + 0x88]
jmp 0x499cdb
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x28]
cmp ebp, esi
cmovge esi, ebp
mov dword [esp], eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax + ebx]
cmp ecx, 1
cmove ebp, esi
mov dword [esp + 0x28], ebp
mov ecx, dword [esp + 8]
mov dword [edi + 8], ecx
mov ecx, dword [esp + 0x48]
mov dword [edi + 4], ecx
mov ecx, dword [esp]
mov dword [edi + 0xc], ecx
mov dword [edi], edx
mov esi, dword [esp + 0x20]
add eax, ebx
inc eax
inc ebx
add edi, 0x10
cmp eax, 2
je 0x497d16
lea ebp, [ebx - 1]
cmp dword [esp + 0x2c], 1
jne 0x499d20
xor esi, esi
mov eax, dword [esp + 4]
cmp dword [esp + 0x74], eax
jle 0x499cf7
mov eax, dword [esp + 0x44]
mov esi, dword [eax]
mov edx, dword [esp + 0x14]
cmp ebp, 0x13
jb 0x499d11
lea eax, [ebx - 0x14]
mov ecx, 0x80808081
mul ecx
shr edx, 7
add edx, dword [esp + 0x24]
add edx, esi
mov eax, dword [esp + 4]
jmp 0x499d43
mov edx, 3
cmp ebp, 0x13
jb 0x499d3a
lea eax, [ebx - 0x14]
mov ecx, 0x80808081
mul ecx
shr edx, 7
add edx, 4
add edx, dword [esp + 0xd8]
xor eax, eax
mov ecx, dword [esp + 0x50]
lea esi, [ecx + ebx]
mov ecx, dword [esp + 0x28]
add ecx, 3
cmp esi, ecx
jg 0x499c90
mov ecx, dword [edi]
add ecx, dword [esp + 0x98]
cmp edx, ecx
jle 0x499c90
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
jmp 0x499ccb
mov eax, dword [esp + 0xa8]
cmp edx, eax
jle 0x497d85
jmp 0x499a89
mov edx, dword [esp + 0x14]
jmp 0x499671
mov edx, dword [esp + 0x18]
jmp 0x499894
mov ecx, dword [esp + 0x28]
mov eax, ecx
shl eax, 4
mov edx, dword [esi + eax + 4]
mov dword [esp + 0x48], edx
mov edi, dword [esi + eax + 8]
mov eax, ecx
mov edx, edi
sub eax, edi
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], ecx
mov ebp, dword [esp + 0x74]
mov ecx, dword [esp + 0x48]
nop dword [eax + eax]
mov eax, ebp
shl eax, 4
mov ebx, 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, ebx
sub ebp, edi
jge 0x499dd0
mov edx, dword [esp + 0x70]
test edx, edx
jle 0x496c0e
xor edi, edi
jmp 0x499e0d
inc dword [esp + 0x34]
inc edi
cmp edi, edx
jge 0x496c0e
mov ecx, edi
shl ecx, 4
mov ebx, dword [esi + ecx + 8]
cmp ebx, 1
je 0x499e00
mov ebp, dword [esp + 0x34]
sub ebp, dword [esp + 0x90]
mov eax, ebp
mov edx, 0x80808081
mul edx
mov eax, dword [esi + ecx + 4]
mov dword [esp + 8], eax
cmp dword [esp + 0x9c], 0
je 0x499e60
shr edx, 7
mov eax, dword [esp + 0xac]
add eax, edx
inc eax
add eax, ebp
add eax, 8
cmp eax, dword [esp + 0xe0]
ja 0x49a249
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0xac]
lea esi, [ebx + 1]
cmp ebp, 0xf
mov edx, ebp
mov dword [esp + 0x28], ebp
mov dword [esp], edi
jb 0x499ecf
lea eax, [edx - 0xf]
mov byte [ebx], 0xf0
cmp eax, 0xff
mov ebp, dword [esp + 0x34]
jb 0x499eca
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 + 0x34]
add esp, 0xc
mov eax, edi
shl eax, 8
lea esi, [ebx + edi]
add esi, 2
sub edi, eax
lea eax, [edx + edi]
add eax, 0xfffffef2
mov byte [esi], al
inc esi
jmp 0x499eda
mov eax, edx
shl al, 4
mov byte [ebx], al
mov ebp, dword [esp + 0x34]
lea eax, [esi + ebp]
mov edi, dword [esp + 0x90]
sub eax, edi
lea ecx, [esi + 8]
cmp eax, ecx
cmovbe eax, ecx
lea ebp, [esi + edx]
mov edx, esi
not edx
add edx, eax
mov eax, edi
mov ecx, esi
cmp edx, 0x18
jb 0x499f60
mov edi, esi
mov eax, dword [esp + 0x90]
sub edi, eax
mov ecx, esi
cmp edi, 0x20
jb 0x499f60
shr edx, 3
inc edx
mov dword [esp + 0x1c], edx
mov edi, edx
and edi, 0xfffffffc
mov edx, dword [esp + 0x90]
lea eax, [edx + edi*8]
lea ecx, [esi + edi*8]
xor ebx, ebx
nop
movups xmm0, xmmword [edx + ebx*8]
movups xmm1, xmmword [edx + ebx*8 + 0x10]
movups xmmword [esi + ebx*8], xmm0
movups xmmword [esi + ebx*8 + 0x10], xmm1
add ebx, 4
cmp edi, ebx
jne 0x499f30
cmp dword [esp + 0x1c], edi
mov ebx, dword [esp + 0xac]
je 0x499f72
nop word cs:[eax + eax]
movsd xmm0, qword [eax]
movsd qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, ebp
jb 0x499f60
mov eax, dword [esp + 4]
lea ecx, [eax - 4]
mov eax, ecx
mov edx, 0x80808081
mul edx
mov eax, dword [esp + 8]
mov word [ebp], ax
cmp dword [esp + 0x9c], 0
je 0x499faa
shr edx, 7
lea eax, [edx + ebp]
add eax, 8
cmp eax, dword [esp + 0xe0]
ja 0x49a204
add ebp, 2
movzx eax, byte [ebx]
cmp ecx, 0xf
jb 0x49a02b
add al, 0xf
mov byte [ebx], al
mov ebx, dword [esp + 4]
lea eax, [ebx - 0x13]
cmp eax, 0x1fe
jb 0x49a009
lea eax, [ebx - 0x211]
mov ecx, 0x80808081
mul ecx
mov edi, edx
shr edi, 8
lea eax, [edi*2 + 2]
push eax
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x28]
lea eax, [eax + edi*2]
lea ebp, [esi + eax]
add ebp, 4
imul eax, edi, 0xfffffe02
add eax, ebx
add eax, 0xfffffdef
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x70]
mov edi, dword [esp]
cmp eax, 0xff
jb 0x49a025
add eax, 0xffffff01
mov byte [ebp], 0xff
inc ebp
mov byte [ebp], al
inc ebp
jmp 0x49a03e
add al, cl
mov byte [ebx], al
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x70]
mov ebx, dword [esp + 4]
mov edi, dword [esp]
add edi, ebx
mov ecx, dword [esp + 0x34]
add ecx, ebx
mov eax, ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0xac], ebp
cmp edi, edx
jl 0x499e0d
jmp 0x496c0e
mov ebp, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
jmp 0x4976c2
mov edx, ecx
jmp 0x499dc0
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x28]
jmp 0x4976c2
mov ecx, dword [esp + 0xb8]
mov esi, dword [esp + 0x84]
mov dword [esp], esi
xor ebx, ebx
mov esi, dword [esp + 0x9c]
cmp esi, 2
sete byte [esp + 8]
mov edi, dword [esp + 0xe0]
sub edi, ecx
lea eax, [edi + 0xf0]
mov edx, 0x80808081
mul edx
test esi, esi
mov ebp, ecx
je 0x49a10c
shr edx, 7
add edx, edi
movzx eax, byte [esp + 8]
mov bl, al
lea eax, [ebx + ebx*4]
mov ecx, dword [esp + 0xb4]
add ecx, eax
mov eax, dword [esp]
add eax, edx
inc eax
cmp eax, ecx
jbe 0x49a10c
xor edi, edi
cmp dword [esp + 0x9c], 1
je 0x49a366
mov eax, dword [esp]
not eax
lea edi, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub edi, eax
lea esi, [edi + ebp]
cmp edi, 0xf
mov ecx, edi
jb 0x49a173
mov dword [esp + 0x70], ebp
lea eax, [ecx - 0xf]
mov ebx, dword [esp]
mov byte [ebx], 0xf0
mov ebp, ecx
lea ecx, [ebx + 1]
cmp eax, 0xff
jb 0x49a20e
lea eax, [ebp - 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 + ebx]
add ecx, 2
sub edi, eax
mov edx, ebp
lea eax, [edi + ebp]
add eax, 0xfffffef2
jmp 0x49a210
mov eax, ecx
shl al, 4
mov ebx, dword [esp]
mov byte [ebx], al
jmp 0x49a21a
mov ebx, dword [esp + 0xc8]
lea esi, [edi + ebp]
cmp edi, 0xf
mov ecx, edi
jb 0x49a1f0
lea eax, [ecx - 0xf]
mov ebx, dword [esp + 0xac]
mov byte [ebx], 0xf0
mov ebp, ecx
lea ecx, [ebx + 1]
cmp eax, 0xff
jb 0x49a31c
lea eax, [ebp - 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 + ebx]
add ecx, 2
sub edi, eax
mov edx, ebp
lea eax, [edi + ebp]
add eax, 0xfffffef2
jmp 0x49a31e
mov eax, ecx
shl al, 4
mov ebp, dword [esp + 0xac]
mov byte [ebp], al
jmp 0x49a32b
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 4]
jmp 0x49a24d
mov edx, ebp
mov byte [ecx], al
mov ebx, ecx
mov ecx, edx
mov ebp, dword [esp + 0x70]
lea eax, [ebx + 1]
push ecx
push ebp
push eax
mov edi, ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
inc edi
sub esi, dword [esp + 0xc8]
mov eax, dword [esp + 0xfc]
mov dword [eax], esi
sub edi, dword [esp + 0xe8]
jmp 0x49a362
mov ebp, dword [esp + 0x34]
xor edi, edi
cmp dword [esp + 0x9c], 2
jne 0x49a356
mov edi, ebx
mov esi, ebp
sub esi, dword [esp + 0x90]
lea eax, [esi + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov dword [esp], esi
add edx, esi
mov esi, dword [esp + 0x78]
lea ecx, [esi - 8]
mov ebx, dword [esp + 0xac]
lea eax, [ebx + edx]
inc eax
cmp eax, ecx
ja 0x49328e
sub ecx, eax
mov edx, ecx
shl edx, 8
sub edx, ecx
add edx, 0x12
cmp edi, edx
cmovb edx, edi
add eax, 2
not eax
add eax, esi
add eax, edx
cmp eax, 0xc
jl 0x49328e
lea esi, [ebx + 1]
mov ecx, dword [esp]
cmp ecx, 0xf
mov dword [esp + 4], edx
jb 0x49a37e
lea eax, [ecx - 0xf]
mov byte [ebx], 0xf0
cmp eax, 0xff
jb 0x49a317
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 + 0xc]
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
inc esi
jmp 0x49a385
mov edx, ebp
mov ebx, dword [esp + 0xc8]
mov byte [ecx], al
mov ebp, ecx
mov ecx, edx
lea eax, [ebp + 1]
push ecx
push dword [esp + 0x94]
push eax
mov edi, ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebp
inc edi
sub esi, ebx
mov eax, dword [esp + 0xfc]
mov dword [eax], esi
sub edi, dword [esp + 0xe8]
push dword [esp + 0x68]
call sub.msvcrt.dll_free
add esp, 4
test edi, edi
jg 0x49a371
mov eax, dword [esp + 0x20]
mov byte [eax + 0x4001b], 1
mov eax, edi
add esp, 0x11c
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ecx
shl al, 4
mov byte [ebx], al
add ecx, esi
mov dword [esp + 0x34], ebp
lea eax, [esi + ebp]
mov ebp, dword [esp + 0x90]
sub eax, ebp
lea edx, [esi + 8]
cmp eax, edx
cmovbe eax, edx
mov edi, esi
not edi
add edi, eax
cmp edi, 0x18
jb 0x49a3f5
mov eax, esi
sub eax, ebp
cmp eax, 0x20
jb 0x49a3f5
shr edi, 3
inc edi
mov dword [esp + 0x10], edi
and edi, 0xfffffffc
lea eax, [edi*8]
add eax, ebp
lea edx, [esi + edi*8]
xor ebx, ebx
movups xmm0, xmmword [ebp + ebx*8]
movups xmm1, xmmword [ebp + ebx*8 + 0x10]
movups xmmword [esi + ebx*8], xmm0
movups xmmword [esi + ebx*8 + 0x10], xmm1
add ebx, 4
cmp edi, ebx
jne 0x49a3cc
cmp dword [esp + 0x10], edi
mov ebx, dword [esp + 0xac]
jne 0x49a3f9
jmp 0x49a40b
mov eax, ebp
mov edx, esi
movsd xmm0, qword [eax]
movsd qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, ecx
jb 0x49a3f9
mov eax, dword [esp + 8]
mov word [ecx], ax
add ecx, 2
mov edx, dword [esp + 4]
lea edi, [edx - 4]
movzx eax, byte [ebx]
mov dword [esp + 8], edi
cmp edi, 0xf
mov edi, ebx
mov ebx, dword [esp + 0x34]
jb 0x49a4a9
add al, 0xf
mov byte [edi], al
lea eax, [edx - 0x13]
cmp eax, 0x1fe
jb 0x49a481
lea eax, [edx - 0x211]
mov edx, 0x80808081
mul edx
mov edi, edx
shr edi, 8
lea eax, [edi*2 + 2]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x10]
add esp, 0xc
mov eax, dword [esp]
lea eax, [eax + edi*2]
lea ecx, [esi + eax]
add ecx, 4
imul eax, edi, 0xfffffe02
add eax, edx
add eax, 0xfffffdef
cmp eax, 0xff
jb 0x49a491
add eax, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], al
inc ecx
add ebx, edx
mov dword [esp + 0x90], ebx
mov dword [esp + 0xac], ecx
jmp 0x49328e
mov esi, ebx
add al, byte [esp + 8]
mov byte [edi], al
add esi, edx
mov dword [esp + 0x90], esi
mov dword [esp + 0xac], ecx
jmp 0x49328e
mov eax, dword [esp + 0x44]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x74]
mov dword [esp], esi
mov ecx, dword [esp + 0x78]
jmp 0x49a5be
mov eax, dword [esp + 0x44]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x84]
mov dword [esp], ecx
mov ecx, dword [esp + 0x78]
mov ebp, dword [esp + 0xa0]
jmp 0x49a5be
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x70], eax
mov dword [esp], esi
jmp 0x49a5b7
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
mov dword [esp], eax
mov ecx, dword [esp + 0x78]
jmp 0x49a5b7
mov dword [esp + 0x64], ebp
mov eax, dword [esp + 0x10]
mov dword [esp + 0x70], eax
mov ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x98]
mov dword [esp], esi
jmp 0x49a5be
mov eax, dword [esp + 0x50]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x70], eax
mov ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 4]
mov dword [esp], ecx
mov ecx, dword [esp + 0x78]
jmp 0x49a5be
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
mov dword [esp], eax
jmp 0x49a5b0
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
mov dword [esp], eax
mov ecx, dword [esp + 0x78]
mov ebp, dword [esp + 0xa0]
mov eax, dword [esp + 0x88]
xor edi, edi
cmp dword [esp + 0x9c], 2
jne 0x49a366
mov edi, eax
mov ebx, dword [esp + 0x64]
sub ebx, dword [esp + 0x70]
lea eax, [ebx + 0xf0]
mov esi, ecx
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov dword [esp + 8], ebx
add edx, ebx
lea ecx, [esi - 8]
mov eax, dword [esp]
add eax, edx
inc eax
cmp eax, ecx
ja 0x49a68d
sub ecx, eax
mov edx, ecx
shl edx, 8
sub edx, ecx
add edx, 0x12
cmp edi, edx
cmovb edx, edi
add eax, 2
not eax
add eax, esi
mov dword [esp + 4], edx
add eax, edx
cmp eax, 0xc
jl 0x49a68d
mov dword [esp + 0xa0], ebp
mov ecx, dword [esp]
lea ebp, [ecx + 1]
mov edx, dword [esp + 8]
cmp edx, 0xf
jb 0x49a699
lea eax, [edx - 0xf]
mov byte [ecx], 0xf0
cmp eax, 0xff
jb 0x49a687
lea eax, [edx - 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
mov edx, dword [esp + 0x14]
add esp, 0xc
mov eax, edi
shl eax, 8
mov ecx, dword [esp]
lea ebp, [edi + ecx]
add ebp, 2
sub edi, eax
lea eax, [edx + edi]
add eax, 0xfffffef2
mov byte [ebp], al
inc ebp
jmp 0x49a6a0
mov ecx, dword [esp + 0x70]
mov esi, dword [esp]
jmp 0x49a096
mov eax, edx
shl al, 4
mov byte [ecx], al
lea edi, [edx + ebp]
mov eax, dword [esp + 0x64]
add eax, ebp
mov esi, dword [esp + 0x70]
sub eax, esi
lea edx, [ebp + 8]
cmp eax, edx
cmovbe eax, edx
mov ecx, ebp
not ecx
add ecx, eax
cmp ecx, 0x18
jb 0x49a736
mov dword [esp + 0x10], edi
mov eax, ebp
sub eax, esi
cmp eax, 0x20
jb 0x49a744
shr ecx, 3
inc ecx
mov edi, ecx
and edi, 0xfffffffc
lea eax, [esi + edi*8]
lea edx, [edi*8]
add edx, ebp
xor ebx, ebx
movups xmm0, xmmword [esi + ebx*8]
movups xmm1, xmmword [esi + ebx*8 + 0x10]
movups xmmword [ebp + ebx*8], xmm0
movups xmmword [ebp + ebx*8 + 0x10], xmm1
add ebx, 4
cmp edi, ebx
jne 0x49a6e6
cmp ecx, edi
mov ecx, dword [esp + 0x64]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x10]
jne 0x49a754
jmp 0x49a766
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x84]
mov dword [esp], edx
jmp 0x49a50e
mov eax, dword [esp + 0x7c]
jmp 0x49a4f8
mov eax, esi
mov edx, ebp
mov ecx, dword [esp + 0x64]
mov ebx, dword [esp + 4]
jmp 0x49a754
mov eax, esi
mov edx, ebp
mov ecx, dword [esp + 0x64]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x10]
movsd xmm0, qword [eax]
movsd qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, edi
jb 0x49a754
mov eax, ecx
sub eax, dword [esp + 0xa0]
mov word [edi], ax
add edi, 2
lea edx, [ebx - 4]
mov esi, dword [esp]
movzx eax, byte [esi]
cmp edx, 0xf
jb 0x49a7e9
mov ecx, edi
add al, 0xf
mov byte [esi], al
lea eax, [ebx - 0x13]
cmp eax, 0x1fe
jb 0x49a7d5
lea eax, [ebx - 0x211]
mov edx, 0x80808081
mul edx
mov edi, edx
shr edi, 8
lea eax, [edi*2 + 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, [eax + ebp]
add ecx, 4
imul eax, edi, 0xfffffe02
add eax, ebx
add eax, 0xfffffdef
cmp eax, 0xff
jb 0x49a7f6
add eax, 0xffffff01
mov esi, ecx
mov byte [ecx], 0xff
inc esi
jmp 0x49a7f8
add al, dl
mov byte [esi], al
add ecx, ebx
mov esi, edi
jmp 0x49a096
mov esi, ecx
mov byte [esi], al
inc esi
mov ecx, dword [esp + 0x64]
add ecx, dword [esp + 4]
jmp 0x49a096