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

Disassembly:
cmp dword [ecx + 0x4001c], 0
jne 0x414871
push dword [esp + 0x14]
push dword [esp + 0x14]
push dword [esp + 0x14]
push dword [esp + 0x14]
push dword [esp + 0x14]
call 0x4103a7
add esp, 0x14
ret
push ebp
push ebx
push edi
push esi
sub esp, 0xf0
mov dword [esp + 0xa4], edx
mov dword [esp + 0x1c], ecx
mov esi, dword [esp + 0x10c]
xor edi, edi
test esi, esi
jg 0x4103d7
cmp dword [esp + 0x114], 2
je 0x414864
mov eax, dword [esp + 0x108]
mov ecx, dword [eax]
cmp ecx, 0x7e000000
ja 0x414864
mov eax, dword [esp + 0x110]
mov edx, dword [esp + 0x1c]
add dword [edx + 0x40000], ecx
cmp eax, 0xc
mov edi, ecx
push 0xc
pop ecx
cmovl ecx, eax
test eax, eax
push 9
pop eax
cmovg eax, ecx
mov ebp, dword [esp + 0x104]
mov dword [esp + 0xd8], eax
imul eax, eax, 0xc
cmp dword [eax + 0x4214fc], 0
mov ecx, dword [eax + 0x421500]
mov dword [esp + 0xc0], ecx
mov ecx, dword [esp + 0xa4]
lea edx, [ecx + edi - 0xc]
mov dword [esp + 0xdc], edx
je 0x41245b
mov dword [esp + 0x6c], edi
lea eax, [eax + 0x4214fc]
mov ecx, dword [esp + 0x1c]
mov cl, byte [ecx + 0x4001a]
xor edi, edi
mov byte [esp + 0x74], cl
neg cl
mov ecx, 0
sbb ecx, ecx
mov dword [esp + 0x90], ecx
mov ebp, dword [eax + 8]
push 0x10030
call sub.msvcrt.dll_malloc
mov ecx, dword [esp + 0xa8]
add esp, 4
mov ebx, eax
test eax, eax
je 0x4146e5
xor eax, eax
cmp dword [esp + 0x114], 2
setne al
mov edx, dword [esp + 0x108]
and dword [edx], 0
mov edx, dword [esp + 0x104]
add esi, edx
mov edx, 0xfff
cmp ebp, edx
cmovb edx, ebp
mov dword [esp + 0xb0], edx
mov edi, dword [esp + 0x6c]
lea edx, [ecx + edi]
mov dword [esp + 0xa8], edx
lea eax, [eax + eax*4]
lea eax, [eax + esi - 5]
mov dword [esp + 0x84], eax
lea edx, [ecx + edi - 5]
lea esi, [edi + ecx - 5]
mov dword [esp + 0xb8], esi
movsd xmm1, qword [0x421350]
lea esi, [edx - 3]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x24], edx
lea edx, [edx - 1]
mov dword [esp + 0xcc], edx
lea edx, [ebx + 0x4c]
mov dword [esp + 0xe4], edx
lea edx, [ebx + 0x1c]
mov dword [esp + 0xe0], edx
lea edx, [ebx + 0x10]
mov dword [esp + 0xec], edx
lea edx, [ebx + 0x40]
mov dword [esp + 0xe8], edx
mov edx, ebx
mov dword [esp + 0x54], ebx
lea edx, [ebx + 8]
mov dword [esp + 0x80], edx
mov edx, ecx
mov eax, dword [esp + 0x104]
mov dword [esp + 0x64], eax
push 0xfffffffffffffffc
pop eax
sub eax, edx
mov dword [esp + 0x5c], eax
mov eax, edx
sub eax, ecx
mov ebx, edx
mov dword [esp + 0x88], ecx
sub bl, cl
mov ecx, eax
add bl, 0xf1
mov byte [esp + 0xac], bl
mov eax, edx
cmp eax, dword [esp + 0xdc]
ja 0x4145fd
mov dword [esp + 0x18], edx
mov dword [esp + 0x58], ecx
mov ebx, dword [esp + 0x1c]
mov ecx, dword [ebx + 0x40004]
mov edx, dword [ebx + 0x40008]
mov dword [esp + 0x4c], edx
mov edx, dword [ebx + 0x4000c]
mov esi, eax
sub esi, ecx
add esi, edx
mov dword [esp + 0x14], esi
mov esi, dword [ebx + 0x40010]
mov dword [esp + 0x50], esi
mov dword [esp + 0x34], eax
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], ecx
mov edi, ecx
mov dword [esp + 0x30], edx
sub edi, edx
mov eax, dword [ebx + 0x40014]
cmp eax, dword [esp + 0x14]
jae 0x410616
imul ecx, dword [edi + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
mov esi, dword [esp + 0x1c]
sub edx, dword [esi + ecx*4]
mov esi, 0xffff
cmp edx, esi
jb 0x410602
mov edx, 0xffff
and esi, eax
mov ebx, dword [esp + 0x1c]
mov word [ebx + esi*2 + 0x20000], dx
mov dword [ebx + ecx*4], eax
inc eax
jmp 0x4105db
mov dword [esp + 0x2c], edi
mov ecx, dword [esp + 0x50]
lea eax, [ecx + 0x10000]
mov esi, dword [esp + 0x14]
lea edx, [esi - 0xffff]
mov dword [esp + 0xc4], eax
cmp eax, esi
cmova edx, ecx
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x30]
lea edx, [eax + edi]
mov ebx, dword [esp + 0x1c]
mov dword [ebx + 0x40014], esi
mov esi, dword [esp + 0x34]
imul eax, dword [esi], 0x9e3779b1
sub edx, ecx
mov dword [esp + 0x78], edx
shr eax, 0x11
mov ebp, dword [ebx + eax*4]
mov edx, dword [esp + 0x28]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
xor edx, eax
lea ebx, [esi + 4]
or edx, ecx
mov ecx, ebp
lea eax, [esi + 8]
mov esi, ebp
mov dword [esp + 0x68], eax
lea eax, [edi - 4]
mov dword [esp + 0x94], eax
sete byte [esp + 0x60]
mov eax, dword [esp + 0x10]
lea eax, [eax + 4]
mov dword [esp + 0xbc], eax
mov edx, dword [esp + 0x18]
lea eax, [edi + edx]
mov dword [esp + 0xd4], eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x70], 0
mov dword [esp], 0
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x44], eax
push 3
pop eax
mov dword [esp + 4], eax
mov dword [esp + 0x20], ebx
cmp esi, dword [esp + 0x38]
jb 0x410daf
mov edi, dword [esp + 0x44]
test edi, edi
mov eax, dword [esp + 4]
jle 0x410db5
mov ecx, dword [esp + 0x14]
sub ecx, esi
cmp byte [esp + 0x74], 0
mov dword [esp + 0xc], esi
je 0x410726
cmp ecx, 8
jb 0x4107ef
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x30]
mov ebp, ecx
mov eax, dword [esp + 0xc]
sub ebp, eax
jbe 0x410797
mov edx, ebp
cmp eax, dword [esp + 0x94]
mov ebp, dword [esp + 0x34]
ja 0x410899
mov edi, eax
sub edi, dword [esp + 0x50]
add edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x28]
cmp dword [edi], ecx
jne 0x410895
add edx, ebp
mov ecx, dword [esp + 0x24]
cmp edx, ecx
mov dword [esp + 8], edx
cmova edx, ecx
add edi, 4
mov dword [esp + 0x7c], edx
add edx, 0xfffffffd
cmp edx, ebx
jbe 0x4108af
mov ecx, dword [ebx]
xor ecx, dword [edi]
je 0x4108a8
bsf ebx, ecx
shr ebx, 3
jmp 0x4108db
sub eax, ecx
add eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 4]
movzx ecx, word [ecx + ebp - 1]
cmp cx, word [ebp + eax - 1]
jne 0x4107e7
mov ecx, dword [esp + 0x28]
cmp dword [eax], ecx
jne 0x4107e7
add eax, 4
cmp dword [esp + 0x3c], ebx
mov edx, dword [esp + 0x18]
jbe 0x410da8
mov ecx, dword [ebx]
xor ecx, dword [eax]
mov ebp, dword [esp + 0x40]
je 0x4109ac
bsf ecx, ecx
shr ecx, 3
mov eax, dword [esp + 4]
jmp 0x410a35
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x18]
xor ecx, ecx
dec edi
cmp ecx, eax
mov dword [esp + 0x44], edi
mov dword [esp + 4], eax
jne 0x41094f
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xc]
add eax, ecx
cmp eax, dword [esp + 0x14]
ja 0x41094f
mov eax, dword [esp + 8]
lea ecx, [eax - 3]
xor edi, edi
push 0x10
pop ebp
xor eax, eax
inc eax
cmp edi, ecx
jge 0x41085b
lea edx, [edi + esi]
movzx edx, dx
mov ebx, dword [esp + 0x1c]
movzx edx, word [ebx + edx*2 + 0x20000]
lea ebx, [ebp + 1]
sar ebp, 4
cmp eax, edx
cmovbe eax, edx
push 0x10
pop edx
cmovb ebx, edx
mov edx, dword [esp]
cmovb edx, edi
mov dword [esp], edx
add edi, ebp
mov ebp, ebx
jmp 0x410825
cmp eax, 1
jbe 0x410947
mov edi, dword [esp + 0xc]
cmp edi, eax
mov ecx, eax
mov edx, 0
cmovb ecx, edx
mov esi, edi
sub esi, ecx
mov ebp, dword [esp + 8]
mov dword [esp + 4], ebp
cmp edi, eax
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
jae 0x4106f2
jmp 0x410db7
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 4]
xor ecx, ecx
mov edx, dword [esp + 0x18]
jmp 0x4107f1
add edi, 4
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x5c]
lea ecx, [eax + ebx]
cmp ebx, edx
jae 0x410b41
mov eax, dword [ebx]
xor eax, dword [edi]
jne 0x4108cf
add ebx, 4
add edi, 4
add ecx, 4
jmp 0x4108b6
bsf ebx, eax
shr ebx, 3
add ebx, ecx
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x44]
lea ecx, [ebx + 4]
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x24]
jae 0x41093a
lea eax, [ebx + ebp]
add eax, 4
mov ebp, dword [esp + 0x7c]
cmp eax, ebp
jne 0x41093a
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x10]
mov edi, ecx
mov eax, ebp
cmp dword [esp + 0x3c], ebp
mov ebx, dword [esp + 0x20]
jbe 0x4109e3
mov eax, dword [ebp]
xor eax, dword [ecx]
je 0x4109d9
bsf eax, eax
shr eax, 3
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 8]
mov ebp, dword [esp + 0x40]
jmp 0x410a4e
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x40]
jmp 0x410a50
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
movzx eax, word [esp + 0xc]
mov ecx, dword [esp + 0x1c]
cmp word [ecx + eax*2 + 0x20000], 1
jne 0x410b14
cmp dword [esp], 0
jne 0x410b14
mov eax, dword [esp + 0x70]
test eax, eax
je 0x410a67
cmp eax, 2
mov edi, dword [esp + 0x30]
jne 0x4109a3
mov ecx, dword [esp + 0xc]
lea ebp, [ecx - 1]
cmp ebp, dword [esp + 0x38]
jb 0x4109a3
mov eax, edi
sub eax, ecx
cmp eax, 3
jae 0x410aa9
push 2
pop eax
mov dword [esp + 0x70], eax
jmp 0x410b14
add eax, 4
mov ebp, dword [esp + 0x68]
mov ecx, dword [esp + 0x5c]
lea edi, [ecx + ebp]
mov ecx, ebp
cmp ebp, dword [esp + 0x3c]
jae 0x410cfb
mov ebp, ecx
mov ecx, dword [ecx]
xor ecx, dword [eax]
jne 0x410a21
add ebp, 4
add eax, 4
add edi, 4
jmp 0x4109ba
lea eax, [ebp + 4]
mov edi, dword [esp + 0xbc]
mov ecx, dword [esp + 0xd4]
sub ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xb8]
cmp ecx, edx
cmovae ecx, edx
mov edx, dword [esp + 0x18]
mov ebx, eax
sub ebx, ecx
mov ebp, dword [esp + 0x40]
cmp eax, dword [esp + 0x3c]
jae 0x410d1c
mov ecx, dword [eax]
xor ecx, dword [edi]
jne 0x410a3a
add eax, 4
add edi, 4
add ebx, 4
jmp 0x410a06
bsf ecx, ecx
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 4]
mov ebp, dword [esp + 0x40]
add ecx, 4
jmp 0x410a54
bsf eax, ecx
shr eax, 3
add eax, ebx
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 8]
add ecx, eax
mov eax, dword [esp + 4]
cmp ecx, eax
jle 0x4107f1
mov dword [esp + 0x48], ebp
mov eax, ecx
jmp 0x4107f1
xor eax, eax
inc eax
mov dword [esp + 0x70], eax
cmp byte [esp + 0x60], 0
je 0x410b14
mov ecx, ebx
mov edx, dword [esp + 0x24]
push dword [esp + 0x28]
call fcn.004199cd
mov edx, dword [esp + 0x1c]
movsd xmm1, qword [0x421350]
add esp, 4
add eax, 4
mov dword [esp + 0x8c], eax
push 2
pop eax
jmp 0x41097d
mov eax, ebp
sub eax, dword [esp + 0x50]
add eax, dword [esp + 0x4c]
mov ecx, ebp
sub ecx, edi
mov edx, dword [esp + 0x10]
lea ecx, [edx + ecx]
cmovb ecx, eax
mov eax, dword [esp + 0x28]
cmp dword [ecx], eax
jne 0x410b09
cmp ebp, edi
mov edx, dword [esp + 0x24]
cmovb edx, dword [esp + 0x78]
mov esi, ecx
add ecx, 4
mov dword [esp], edx
push eax
call fcn.004199cd
pop ecx
lea edx, [eax + 4]
cmp ebp, edi
jae 0x410b33
mov edi, esi
lea ecx, [esi + edx]
cmp ecx, dword [esp]
mov ecx, dword [esp + 0x10]
mov esi, edx
je 0x410b69
mov dword [esp + 0xc], esi
mov edx, dword [esp + 0x4c]
mov esi, ecx
jmp 0x410b95
push 2
pop eax
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0x18]
mov eax, dword [esp]
mov esi, dword [esp + 0xc]
add eax, esi
movzx eax, ax
mov ecx, dword [esp + 0x1c]
movzx eax, word [ecx + eax*2 + 0x20000]
sub esi, eax
jmp 0x4106f2
mov edi, esi
mov dword [esp + 0xc], edx
mov esi, dword [esp + 0x10]
mov edx, esi
jmp 0x410b95
mov eax, dword [esp + 0x7c]
dec eax
cmp ebx, eax
jae 0x410d59
movzx eax, word [edi]
cmp ax, word [ebx]
mov edx, dword [esp + 0x18]
jne 0x410d5d
add ebx, 2
add edi, 2
jmp 0x410d5d
shl eax, 3
mov ebx, dword [esp + 0x28]
mov edx, ecx
mov ecx, eax
rol ebx, cl
mov ecx, edx
mov edx, dword [esp + 0x24]
push ebx
mov ebx, dword [esp + 0x24]
call fcn.004199cd
pop ecx
add esi, eax
mov dword [esp + 0xc], esi
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x10]
mov ecx, edi
push dword [esp + 0x28]
call fcn.00419a04
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
cmp ebp, eax
jae 0x410bc0
movsd xmm1, qword [0x421350]
mov esi, dword [esp + 0x8c]
mov edx, dword [esp + 0xc]
jmp 0x410c26
mov dword [esp], ecx
sub edi, ecx
cmp edi, esi
movsd xmm1, qword [0x421350]
mov ecx, dword [esp + 0xc]
jne 0x410c1a
cmp dword [esp + 0x50], eax
mov esi, dword [esp + 0x8c]
mov edx, ecx
mov ecx, dword [esp]
jae 0x410c26
mov ecx, dword [esp]
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x28]
rol eax, cl
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x4c]
push eax
call fcn.00419a04
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x10]
movsd xmm1, qword [0x421350]
add esp, 4
add ecx, eax
jmp 0x410c26
mov esi, dword [esp + 0x8c]
mov edx, ecx
mov ecx, dword [esp]
mov eax, ebp
sub eax, ecx
mov ecx, dword [esp + 0x38]
cmp eax, ecx
cmovbe eax, ecx
mov ecx, ebp
sub ecx, eax
add ecx, edx
cmp edx, esi
ja 0x410c70
cmp ecx, esi
jb 0x410c70
mov edi, edx
sub ebp, esi
mov esi, edx
add esi, ebp
mov eax, esi
not eax
mov ecx, dword [esp + 0x30]
add eax, ecx
cmp eax, 3
cmovb esi, ecx
mov dword [esp], 0
push 2
pop eax
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0x18]
jmp 0x4106f2
mov edx, eax
not edx
mov esi, dword [esp + 0x30]
add edx, esi
mov dword [esp], 0
push 2
pop edi
mov dword [esp + 0x70], edi
mov ebx, dword [esp + 0x20]
cmp edx, 3
mov edx, dword [esp + 0x18]
jb 0x4106f2
mov edi, dword [esp + 0x8c]
cmp ecx, edi
cmovae ecx, edi
mov esi, dword [esp + 4]
cmp esi, ecx
jae 0x410cc2
mov edi, dword [esp + 0x14]
sub edi, eax
mov ebp, esi
cmp edi, 0xffff
jbe 0x410cc8
jmp 0x410db7
mov edi, dword [esp + 0x48]
mov ecx, esi
movzx edx, ax
mov esi, dword [esp + 0x1c]
movzx edx, word [esi + edx*2 + 0x20000]
mov dword [esp + 0x48], edi
push 2
pop edi
mov dword [esp + 0x70], edi
mov dword [esp + 4], ecx
mov ebp, ecx
sub eax, edx
mov edx, dword [esp + 0x18]
mov esi, eax
jae 0x4106f2
jmp 0x410db7
cmp ecx, dword [esp + 0xcc]
jae 0x410d7f
mov edi, ecx
movzx ecx, word [eax]
cmp cx, word [edi]
mov ecx, edi
mov edi, dword [esp + 0x44]
jne 0x410d83
add ecx, 2
add eax, 2
jmp 0x410d83
cmp eax, dword [esp + 0xcc]
jae 0x410d33
movzx ecx, word [edi]
cmp cx, word [eax]
jne 0x410d33
add eax, 2
add edi, 2
cmp eax, dword [esp + 0x24]
jae 0x410d44
mov cl, byte [edi]
xor ebx, ebx
cmp cl, byte [eax]
sete bl
add eax, ebx
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 8]
sub eax, dword [esp + 0x7c]
jmp 0x410a4e
mov edx, dword [esp + 0x18]
cmp ebx, dword [esp + 0x7c]
jae 0x410d6e
mov al, byte [edi]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
sub ebx, dword [esp + 0x20]
jmp 0x4108e3
mov edi, dword [esp + 0x44]
cmp ecx, dword [esp + 0x24]
jae 0x410d99
mov al, byte [eax]
mov ebp, ecx
xor ecx, ecx
cmp al, byte [ebp]
sete cl
add ebp, ecx
mov ecx, ebp
mov eax, dword [esp + 4]
mov ebp, dword [esp + 0x40]
sub ecx, ebx
jmp 0x410a35
mov ebp, ebx
jmp 0x4109b3
mov ebp, dword [esp + 4]
jmp 0x410db7
mov ebp, eax
lea eax, [ebp - 0x13]
cmp eax, 0x12
mov ecx, ebp
push 0x12
pop eax
cmovb ecx, eax
cmp byte [esp + 0x74], 0
cmove ecx, ebp
cmp ebp, 4
jl 0x410dd6
test ecx, ecx
jne 0x410df1
mov eax, dword [esp + 0x34]
inc eax
dec dword [esp + 0x5c]
inc edx
mov ecx, dword [esp + 0x58]
inc ecx
inc byte [esp + 0xac]
jmp 0x41057c
mov ebx, dword [esp + 0x34]
sub ebx, dword [esp + 0x88]
cmp dword [esp + 0xb0], ecx
jae 0x410e5f
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
cmp dword [esp + 0x114], 0
je 0x410e30
add eax, dword [esp + 0x64]
add eax, ebx
add eax, 9
cmp eax, dword [esp + 0x84]
ja 0x414379
cmp ebx, 0xf
jb 0x412375
lea edx, [ebx - 0xf]
mov eax, dword [esp + 0x64]
mov byte [eax], 0xf0
add eax, 2
cmp edx, 0xff
jb 0x412385
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x410e46
mov dword [esp + 0x38], ecx
xor esi, esi
xor edi, edi
mov ebp, dword [esp + 0x54]
mov ecx, dword [esp + 0x58]
mov dword [esp], ebx
cmp esi, 0x40
je 0x410eb4
mov eax, ecx
cmp ecx, 0xf
jl 0x410e9f
lea eax, [edi + ebx]
mov dword [esp + 0x14], eax
lea eax, [ecx - 0xf]
xor edx, edx
mov ebx, ecx
mov ecx, 0xff
div ecx
mov ecx, ebx
mov ebx, dword [esp]
mov edx, dword [esp + 0x14]
add eax, edx
inc eax
movsd qword [ebp + esi + 4], xmm1
mov dword [ebp + esi + 0xc], ecx
mov dword [ebp + esi], eax
inc edi
add esi, 0x10
inc ecx
jmp 0x410e72
lea eax, [ebx - 0xf]
xor edx, edx
mov esi, 0xff
div esi
cmp ebx, 0xf
lea eax, [ebx + eax + 1]
cmovl eax, ebx
lea edx, [eax + 3]
add eax, 4
mov dword [esp + 0x14], eax
mov ebp, dword [esp + 0xe4]
push 0xfffffffffffffff1
pop ebx
mov edi, dword [esp + 0x38]
lea esi, [ebx + 0x13]
cmp esi, edi
jg 0x410f20
mov eax, edx
cmp esi, 0x13
jb 0x410f07
mov eax, ebx
mov ecx, edx
xor edx, edx
mov edi, 0xff
div edi
mov edx, ecx
mov edi, dword [esp + 0x38]
add eax, dword [esp + 0x14]
mov dword [ebp - 4], esi
mov ecx, dword [esp + 0x48]
mov dword [ebp - 8], ecx
mov ecx, dword [esp]
mov dword [ebp], ecx
mov dword [ebp - 0xc], eax
inc ebx
add ebp, 0x10
jmp 0x410ee2
mov eax, edi
shl eax, 4
mov ecx, dword [esp + 0x54]
add ecx, eax
add eax, dword [esp + 0xe0]
xor edx, edx
inc edx
mov ebp, dword [esp + 0x1c]
cmp edx, 4
je 0x410f52
movsd qword [eax - 8], xmm1
mov dword [eax], edx
mov esi, dword [ecx]
add esi, edx
mov dword [eax - 0xc], esi
inc edx
add eax, 0x10
jmp 0x410f39
xor ecx, ecx
inc ecx
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x5c]
sub eax, ecx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0xd4]
add eax, ecx
mov dword [esp + 0x9c], eax
mov edx, ecx
shl edx, 4
mov eax, dword [esp + 0xec]
add eax, edx
mov dword [esp + 0xa0], eax
add edx, dword [esp + 0xe8]
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x38], edi
mov edx, edi
sub edx, ecx
mov dword [esp + 0x28], edx
jle 0x412173
add eax, ecx
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0xdc]
ja 0x412173
lea eax, [ecx + 1]
mov dword [esp + 0x7c], eax
shl eax, 4
mov dword [esp + 0xac], ecx
mov edx, ecx
shl edx, 4
mov ecx, dword [esp + 0x54]
mov eax, dword [ecx + eax]
mov dword [esp + 0xc8], edx
mov ecx, dword [ecx + edx]
cmp dword [esp + 0xd8], 0xc
mov dword [esp + 0x60], ecx
jne 0x411066
cmp eax, ecx
jg 0x411011
mov eax, dword [esp + 0x60]
add eax, 3
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xc8]
cmp dword [edx + ecx + 0x40], eax
jl 0x411f28
mov eax, dword [esp + 0x44]
mov ecx, eax
sub ecx, esi
add ecx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov ebx, dword [eax]
mov eax, dword [ebp + 0x40014]
mov edi, dword [esp + 0x2c]
cmp eax, dword [esp + 4]
jae 0x4110c3
imul ecx, dword [edi + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebp + ecx*4]
mov esi, 0xffff
cmp edx, esi
jb 0x411055
mov edx, 0xffff
and esi, eax
mov word [ebp + esi*2 + 0x20000], dx
mov dword [ebp + ecx*4], eax
inc eax
jmp 0x41102d
cmp eax, ecx
jle 0x411f28
mov eax, dword [esp + 0x44]
mov ecx, eax
sub ecx, esi
add ecx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov ebx, dword [eax]
mov eax, dword [ebp + 0x40014]
mov edi, dword [esp + 0x2c]
cmp eax, dword [esp + 4]
jae 0x4117d7
imul ecx, dword [edi + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebp + ecx*4]
mov esi, 0xffff
cmp edx, esi
jb 0x4110b2
mov edx, 0xffff
and esi, eax
mov word [ebp + esi*2 + 0x20000], dx
mov dword [ebp + ecx*4], eax
inc eax
jmp 0x41108a
mov eax, dword [esp + 4]
lea ecx, [eax - 0xffff]
cmp dword [esp + 0xc4], eax
cmova ecx, dword [esp + 0x50]
mov dword [esp + 0x18], ecx
mov dword [ebp + 0x40014], eax
mov ecx, dword [esp + 0x44]
imul eax, dword [ecx], 0x9e3779b1
shr eax, 0x11
mov edx, ebx
mov ebx, dword [ebp + eax*4]
lea eax, [ecx + 4]
mov dword [esp + 0x58], eax
lea eax, [ecx + 8]
mov dword [esp + 0xb4], eax
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
mov edi, edx
shr edx, 0x18
xor edx, eax
or edx, ecx
sete byte [esp + 0xd0]
mov dword [esp + 0x68], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x6c], 0
xor esi, esi
mov edx, dword [esp + 0xc0]
push 3
pop ebp
mov dword [esp + 0x28], edi
cmp ebx, dword [esp + 0x18]
jb 0x411edd
test edx, edx
jle 0x411edd
mov ecx, ebx
mov ebx, dword [esp + 4]
sub ebx, ecx
mov dword [esp + 0x14], 0
cmp byte [esp + 0x74], 0
mov dword [esp], ecx
je 0x411185
cmp ebx, 8
jb 0x411263
mov eax, dword [esp + 0x30]
mov edi, eax
sub edi, ecx
jbe 0x411205
cmp ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x28]
ja 0x411263
mov dword [esp + 0x20], edi
mov dword [esp + 8], ebp
mov edi, ecx
sub edi, dword [esp + 0x50]
add edi, dword [esp + 0x4c]
cmp dword [edi], eax
jne 0x41125f
mov dword [esp + 0x40], ebx
mov dword [esp + 0xc], edx
mov ebp, dword [esp + 0x20]
add ebp, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
cmp ebp, eax
mov dword [esp + 0x20], ebp
cmova ebp, eax
add edi, 4
lea edx, [ebp - 3]
mov ebx, dword [esp + 0x58]
cmp edx, ebx
mov dword [esp + 0x8c], ebp
jbe 0x411307
mov ecx, dword [ebx]
xor ecx, dword [edi]
je 0x4112fd
bsf ebx, ecx
shr ebx, 3
jmp 0x41132f
mov dword [esp + 0x40], ebx
mov ebx, ecx
mov ecx, eax
mov eax, ebx
sub eax, ecx
add eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
movzx ecx, word [ecx + ebp - 1]
cmp cx, word [ebp + eax - 1]
jne 0x41125a
mov ebx, dword [esp + 0x28]
cmp dword [eax], ebx
jne 0x41125a
add eax, 4
mov ecx, dword [esp + 0x58]
cmp dword [esp + 0x3c], ecx
mov edi, dword [esp + 0x1c]
jbe 0x4117cc
mov ecx, dword [ecx]
xor ecx, dword [eax]
je 0x4113d1
bsf ebx, ecx
shr ebx, 3
mov ecx, dword [esp]
jmp 0x411457
mov ecx, dword [esp]
jmp 0x411263
mov ebp, dword [esp + 8]
mov edi, dword [esp + 0x1c]
dec edx
cmp dword [esp + 0x14], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 8], ebp
jne 0x4113a4
lea eax, [ecx + ebp]
cmp eax, dword [esp + 4]
ja 0x4113a4
mov eax, dword [esp + 0x14]
lea ecx, [eax - 3]
xor edi, edi
push 0x10
pop ebp
xor eax, eax
inc eax
cmp edi, ecx
jge 0x4112c8
mov edx, dword [esp]
add edx, edi
movzx edx, dx
mov ebx, dword [esp + 0x1c]
movzx edx, word [ebx + edx*2 + 0x20000]
lea ebx, [ebp + 1]
sar ebp, 4
cmp eax, edx
cmovbe eax, edx
push 0x10
pop edx
cmovb ebx, edx
cmovb esi, edi
add edi, ebp
mov ebp, ebx
jmp 0x411296
cmp eax, 1
jbe 0x411395
mov ebx, dword [esp]
cmp ebx, eax
mov ecx, eax
mov edx, 0
cmovb ecx, edx
mov edx, ebx
sub edx, ecx
mov edi, dword [esp + 0x14]
mov ebp, edi
cmp ebx, eax
mov ebx, edx
mov edx, dword [esp + 0xc]
jae 0x411150
jmp 0x411edf
add edi, 4
mov ebx, dword [esp + 0xb4]
mov eax, dword [esp + 0x70]
lea ecx, [eax + ebx]
cmp ebx, edx
jae 0x4116c3
mov eax, dword [ebx]
xor eax, dword [edi]
jne 0x411327
add ebx, 4
add edi, 4
add ecx, 4
jmp 0x41130e
bsf ebx, eax
shr ebx, 3
add ebx, ecx
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov edi, dword [esp + 0x20]
lea eax, [ebx + 4]
mov dword [esp + 0x14], eax
cmp edi, dword [esp + 0x24]
jae 0x411388
mov eax, dword [esp + 0x44]
add eax, ebx
add eax, 4
mov ebx, dword [esp + 0x8c]
cmp eax, ebx
jne 0x411388
mov ecx, dword [esp + 0x10]
mov edi, ecx
mov eax, ebx
cmp dword [esp + 0x3c], ebx
jbe 0x41140b
mov ebp, ebx
mov eax, dword [ebx]
xor eax, dword [ecx]
je 0x411401
bsf eax, eax
shr eax, 3
jmp 0x411474
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x14]
jmp 0x411485
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
movzx eax, cx
cmp word [edi + eax*2 + 0x20000], 1
jne 0x41150e
test esi, esi
jne 0x41150e
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x4114a2
mov ebx, edi
jmp 0x4114e6
mov dword [esp + 8], ebp
add eax, 4
mov ebx, dword [esp + 0xb4]
mov ecx, dword [esp + 0x70]
lea edi, [ecx + ebx]
cmp ebx, dword [esp + 0x3c]
jae 0x411720
mov ecx, dword [ebx]
xor ecx, dword [eax]
jne 0x411444
add ebx, 4
add eax, 4
add edi, 4
jmp 0x4113e6
lea eax, [ebp + 4]
mov edi, dword [esp + 0xbc]
mov ecx, dword [esp + 0x9c]
sub ecx, dword [esp]
mov edx, dword [esp + 0xb8]
cmp edx, ecx
cmovb ecx, edx
mov edx, dword [esp + 0xc]
mov ebx, eax
sub ebx, ecx
cmp eax, dword [esp + 0x3c]
jae 0x411741
mov ecx, dword [eax]
xor ecx, dword [edi]
jne 0x41146c
add eax, 4
add edi, 4
add ebx, 4
jmp 0x411429
bsf ebx, ecx
shr ebx, 3
add ebx, edi
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
add ebx, 4
mov dword [esp + 0x14], ebx
cmp ebx, ebp
jle 0x411267
jmp 0x411495
bsf eax, ecx
shr eax, 3
add eax, ebx
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov edi, dword [esp + 0x14]
add edi, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x14], edi
cmp edi, ebp
mov edi, dword [esp + 0x1c]
jle 0x411267
mov dword [esp + 0x68], eax
mov ebp, dword [esp + 0x14]
jmp 0x411267
xor eax, eax
inc eax
mov dword [esp + 0x6c], eax
cmp byte [esp + 0xd0], 0
je 0x41150e
mov ebx, edi
mov ecx, dword [esp + 0x58]
mov edi, edx
mov edx, dword [esp + 0x24]
push dword [esp + 0x28]
call fcn.004199cd
mov ecx, dword [esp + 4]
mov edx, edi
movsd xmm1, qword [0x421350]
add esp, 4
add eax, 4
mov dword [esp + 0x98], eax
push 2
pop eax
cmp eax, 2
mov edi, dword [esp + 0x30]
jne 0x411504
lea ebp, [ecx - 1]
cmp ebp, dword [esp + 0x18]
jb 0x411504
mov eax, edi
sub eax, ecx
cmp eax, 3
jae 0x411527
push 2
pop eax
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 8]
mov edi, ebx
mov ebx, edi
lea eax, [esi + ecx]
movzx eax, ax
movzx eax, word [edi + eax*2 + 0x20000]
sub ecx, eax
mov ebx, ecx
jmp 0x411150
mov eax, ebp
sub eax, dword [esp + 0x50]
add eax, dword [esp + 0x4c]
mov ecx, ebp
sub ecx, edi
mov edx, dword [esp + 0x10]
lea ecx, [edx + ecx]
cmovb ecx, eax
mov eax, dword [esp + 0x28]
cmp dword [ecx], eax
jne 0x41159f
cmp ebp, edi
mov edx, dword [esp + 0x24]
cmovb edx, dword [esp + 0x78]
mov esi, ecx
add ecx, 4
mov dword [esp], edx
push eax
call fcn.004199cd
pop ecx
lea ebx, [eax + 4]
cmp ebp, edi
mov dword [esp + 0x14], esi
jae 0x4115b6
mov edi, ebx
lea ecx, [esi + ebx]
cmp ecx, dword [esp]
mov ebx, dword [esp + 0x10]
jne 0x411596
shl eax, 3
mov edx, dword [esp + 0x28]
mov ecx, eax
rol edx, cl
mov eax, edx
mov ecx, ebx
mov edx, dword [esp + 0x24]
push eax
call fcn.004199cd
pop ecx
add edi, eax
mov dword [esp], edi
mov edx, dword [esp + 0x4c]
jmp 0x4115bf
push 2
pop eax
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
jmp 0x41150c
mov dword [esp], ebx
mov ebx, dword [esp + 0x10]
mov edx, ebx
mov edi, dword [esp + 0x14]
mov ecx, edi
push dword [esp + 0x28]
call fcn.00419a04
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
cmp ebp, eax
jae 0x4115ea
movsd xmm1, qword [0x421350]
mov esi, dword [esp + 0x98]
jmp 0x41162f
sub edi, ecx
cmp edi, ebx
movsd xmm1, qword [0x421350]
jne 0x4115e1
cmp dword [esp + 0x50], eax
mov esi, dword [esp + 0x98]
jae 0x41162f
mov edi, ecx
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x28]
rol eax, cl
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x4c]
push eax
call fcn.00419a04
mov ecx, edi
movsd xmm1, qword [0x421350]
add esp, 4
add ecx, eax
mov eax, ebp
sub eax, ecx
mov ecx, dword [esp + 0x18]
cmp eax, ecx
cmovbe eax, ecx
mov ecx, ebp
sub ecx, eax
mov edx, dword [esp]
add ecx, edx
cmp edx, esi
ja 0x41167a
cmp ecx, esi
jb 0x41167a
sub ebp, esi
mov ebx, dword [esp]
add ebx, ebp
mov eax, ebx
not eax
mov ecx, dword [esp + 0x30]
add eax, ecx
cmp eax, 3
cmovb ebx, ecx
xor esi, esi
push 2
pop eax
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x411150
mov edx, eax
not edx
mov ebx, dword [esp + 0x30]
add edx, ebx
xor esi, esi
push 2
pop edi
mov dword [esp + 0x6c], edi
cmp edx, 3
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jb 0x411150
mov edx, dword [esp + 0x98]
cmp ecx, edx
cmovae ecx, edx
cmp ebp, ecx
mov edi, ebp
jae 0x4116e9
mov ebp, dword [esp + 4]
sub ebp, eax
cmp ebp, 0xffff
jbe 0x4116ef
jmp 0x411edf
lea eax, [ebp - 1]
cmp ebx, eax
jae 0x41177c
movzx eax, word [edi]
cmp ax, word [ebx]
mov edx, dword [esp + 0xc]
jne 0x411780
add ebx, 2
add edi, 2
jmp 0x411780
mov ebp, dword [esp + 0x68]
mov ecx, edi
movzx edx, ax
mov ebx, dword [esp + 0x1c]
movzx edx, word [ebx + edx*2 + 0x20000]
mov dword [esp + 0x68], ebp
push 2
pop edi
mov dword [esp + 0x6c], edi
mov ebp, ecx
mov edi, ecx
sub eax, edx
mov edx, dword [esp + 0xc]
mov ebx, eax
jae 0x411150
jmp 0x411edf
cmp ebx, dword [esp + 0xcc]
jae 0x4117a3
movzx ecx, word [eax]
cmp cx, word [ebx]
mov ebp, dword [esp + 8]
mov edi, dword [esp + 0x1c]
jne 0x4117ab
add ebx, 2
add eax, 2
jmp 0x4117ab
cmp eax, dword [esp + 0xcc]
jae 0x411758
movzx ecx, word [edi]
cmp cx, word [eax]
jne 0x411758
add eax, 2
add edi, 2
cmp eax, dword [esp + 0x24]
jae 0x411769
mov cl, byte [edi]
xor ebx, ebx
cmp cl, byte [eax]
sete bl
add eax, ebx
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
sub eax, dword [esp + 0x8c]
jmp 0x41147b
mov edx, dword [esp + 0xc]
cmp ebx, ebp
jae 0x41178f
mov al, byte [edi]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov edi, dword [esp + 0x20]
sub ebx, dword [esp + 0x58]
jmp 0x41133e
mov ebp, dword [esp + 8]
mov edi, dword [esp + 0x1c]
cmp ebx, dword [esp + 0x24]
jae 0x4117bc
mov al, byte [eax]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov ecx, dword [esp]
mov eax, dword [esp + 0x40]
sub ebx, dword [esp + 0x58]
jmp 0x41145b
mov dword [esp + 8], ebp
mov ebx, ecx
jmp 0x4113df
mov eax, dword [esp + 4]
lea ecx, [eax - 0xffff]
cmp dword [esp + 0xc4], eax
cmova ecx, dword [esp + 0x50]
mov dword [esp + 0x20], ecx
mov dword [ebp + 0x40014], eax
mov ecx, dword [esp + 0x44]
imul eax, dword [ecx], 0x9e3779b1
shr eax, 0x11
mov edx, ebx
mov ebx, dword [ebp + eax*4]
lea eax, [ecx + 4]
mov dword [esp + 0x58], eax
lea eax, [ecx + 8]
mov dword [esp + 0xb4], eax
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
mov edi, edx
shr edx, 0x18
xor edx, eax
or edx, ecx
sete byte [esp + 0xd0]
mov dword [esp + 0x68], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x6c], 0
xor esi, esi
mov edx, dword [esp + 0xc0]
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x18], edi
cmp ebx, dword [esp + 0x20]
jb 0x411efa
test edx, edx
jle 0x411efa
mov ecx, ebx
mov eax, dword [esp + 4]
sub eax, ebx
mov dword [esp + 0x14], 0
cmp byte [esp + 0x74], 0
mov dword [esp], ebx
je 0x41189a
cmp eax, 8
jb 0x411967
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x30]
mov edi, eax
sub edi, ecx
jbe 0x411916
cmp ecx, dword [esp + 0x94]
mov ebx, dword [esp + 0x18]
ja 0x41196b
mov eax, edi
mov dword [esp + 8], ebp
mov edi, ecx
sub edi, dword [esp + 0x50]
add edi, dword [esp + 0x4c]
cmp dword [edi], ebx
jne 0x411a01
mov dword [esp + 0xc], edx
mov ebp, eax
add ebp, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
cmp ebp, eax
mov dword [esp + 0x14], ebp
cmova ebp, eax
add edi, 4
lea edx, [ebp - 3]
mov ebx, dword [esp + 0x58]
cmp edx, ebx
mov dword [esp + 0x8c], ebp
jbe 0x411a1c
mov ecx, dword [ebx]
xor ecx, dword [edi]
je 0x411a12
bsf ebx, ecx
shr ebx, 3
jmp 0x411a44
mov ebx, ecx
mov ecx, eax
mov eax, ebx
sub eax, ecx
add eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
movzx ecx, word [ecx + ebp - 1]
cmp cx, word [ebp + eax - 1]
jne 0x411964
mov ebx, dword [esp + 0x18]
cmp dword [eax], ebx
jne 0x411a0a
add eax, 4
mov ecx, dword [esp + 0x58]
cmp dword [esp + 0x3c], ecx
jbe 0x411ed2
mov ecx, dword [ecx]
xor ecx, dword [eax]
je 0x411b6c
bsf ebx, ecx
shr ebx, 3
jmp 0x411beb
mov ecx, dword [esp]
mov ebx, dword [esp + 0x18]
dec edx
cmp dword [esp + 0x14], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 8], ebp
jne 0x411ab5
lea eax, [ecx + ebp]
cmp eax, dword [esp + 4]
ja 0x411ab5
mov eax, dword [esp + 0x14]
lea ecx, [eax - 3]
xor edi, edi
push 0x10
pop ebp
xor eax, eax
inc eax
cmp edi, ecx
jge 0x4119cc
mov edx, dword [esp]
add edx, edi
movzx edx, dx
mov ebx, dword [esp + 0x1c]
movzx edx, word [ebx + edx*2 + 0x20000]
lea ebx, [ebp + 1]
sar ebp, 4
cmp eax, edx
cmovbe eax, edx
push 0x10
pop edx
cmovb ebx, edx
cmovb esi, edi
add edi, ebp
mov ebp, ebx
jmp 0x41199a
cmp eax, 1
jbe 0x411abb
mov ebx, dword [esp]
cmp ebx, eax
mov ecx, eax
mov edx, 0
cmovb ecx, edx
mov edx, ebx
sub edx, ecx
mov edi, dword [esp + 0x14]
mov ebp, edi
cmp ebx, eax
mov ebx, edx
mov edx, dword [esp + 0xc]
jae 0x411865
jmp 0x411efc
mov ebp, dword [esp + 8]
jmp 0x41196b
mov ecx, dword [esp]
jmp 0x41196b
add edi, 4
mov ebx, dword [esp + 0xb4]
mov eax, dword [esp + 0x70]
lea ecx, [eax + ebx]
cmp ebx, edx
jae 0x411dd1
mov eax, dword [ebx]
xor eax, dword [edi]
jne 0x411a3c
add ebx, 4
add edi, 4
add ecx, 4
jmp 0x411a23
bsf ebx, eax
shr ebx, 3
add ebx, ecx
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov edi, dword [esp + 0x14]
lea eax, [ebx + 4]
mov dword [esp + 0x14], eax
cmp edi, dword [esp + 0x24]
jae 0x411aa8
mov eax, dword [esp + 0x44]
add eax, ebx
add eax, 4
mov ebx, dword [esp + 0x8c]
cmp eax, ebx
jne 0x411aa8
mov ecx, dword [esp + 0x10]
mov edi, ecx
mov eax, ebx
cmp dword [esp + 0x3c], ebx
jbe 0x411ba6
mov ebp, ebx
mov eax, dword [ebx]
xor eax, dword [ecx]
je 0x411b9c
bsf eax, eax
shr eax, 3
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov ebx, dword [esp + 0x18]
jmp 0x411c16
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
jmp 0x411c1c
mov edi, dword [esp + 0x1c]
jmp 0x411ace
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
movzx eax, cx
cmp word [edi + eax*2 + 0x20000], 1
jne 0x411b51
test esi, esi
jne 0x411b51
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x411b27
xor eax, eax
inc eax
mov dword [esp + 0x6c], eax
cmp byte [esp + 0xd0], 0
je 0x411b51
mov ecx, dword [esp + 0x58]
mov edi, edx
mov edx, dword [esp + 0x24]
push ebx
call fcn.004199cd
mov ecx, dword [esp + 4]
mov edx, edi
movsd xmm1, qword [0x421350]
add esp, 4
add eax, 4
mov dword [esp + 0x98], eax
push 2
pop eax
cmp eax, 2
mov edi, dword [esp + 0x30]
jne 0x411b49
lea ebp, [ecx - 1]
cmp ebp, dword [esp + 0x20]
jb 0x411b49
mov eax, edi
sub eax, ecx
cmp eax, 3
jae 0x411c39
push 2
pop eax
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 8]
lea eax, [esi + ecx]
movzx eax, ax
mov edi, dword [esp + 0x1c]
movzx eax, word [edi + eax*2 + 0x20000]
sub ecx, eax
mov ebx, ecx
jmp 0x411865
mov dword [esp + 8], ebp
add eax, 4
mov ebx, dword [esp + 0xb4]
mov ecx, dword [esp + 0x70]
lea edi, [ecx + ebx]
cmp ebx, dword [esp + 0x3c]
jae 0x411e2e
mov ecx, dword [ebx]
xor ecx, dword [eax]
jne 0x411bdf
add ebx, 4
add eax, 4
add edi, 4
jmp 0x411b81
lea eax, [ebp + 4]
mov edi, dword [esp + 0xbc]
mov ecx, dword [esp + 0x9c]
sub ecx, dword [esp]
mov edx, dword [esp + 0xb8]
cmp edx, ecx
cmovb ecx, edx
mov edx, dword [esp + 0xc]
mov ebx, eax
sub ebx, ecx
cmp eax, dword [esp + 0x3c]
jae 0x411e4b
mov ecx, dword [eax]
xor ecx, dword [edi]
jne 0x411c03
add eax, 4
add edi, 4
add ebx, 4
jmp 0x411bc4
bsf ebx, ecx
shr ebx, 3
add ebx, edi
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
add ebx, 4
mov dword [esp + 0x14], ebx
cmp ebx, ebp
mov ebx, dword [esp + 0x18]
jle 0x41196b
jmp 0x411c28
bsf eax, ecx
shr eax, 3
add eax, ebx
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov edi, dword [esp + 0x14]
add edi, eax
mov dword [esp + 0x14], edi
cmp edi, ebp
jle 0x41196b
mov eax, dword [esp + 0x40]
mov dword [esp + 0x68], eax
mov ebp, dword [esp + 0x14]
jmp 0x41196b
mov eax, ebp
sub eax, dword [esp + 0x50]
add eax, dword [esp + 0x4c]
mov ecx, ebp
sub ecx, edi
mov edx, dword [esp + 0x10]
lea ecx, [edx + ecx]
cmovb ecx, eax
cmp dword [ecx], ebx
jne 0x411cad
cmp ebp, edi
mov edx, dword [esp + 0x24]
cmovb edx, dword [esp + 0x78]
mov esi, ecx
add ecx, 4
mov dword [esp], edx
push ebx
call fcn.004199cd
pop ecx
lea ebx, [eax + 4]
cmp ebp, edi
mov dword [esp + 0x14], esi
jae 0x411cc4
mov edi, ebx
lea ecx, [esi + ebx]
cmp ecx, dword [esp]
mov ebx, dword [esp + 0x10]
jne 0x411ca4
shl eax, 3
mov edx, dword [esp + 0x18]
mov ecx, eax
rol edx, cl
mov eax, edx
mov ecx, ebx
mov edx, dword [esp + 0x24]
push eax
call fcn.004199cd
pop ecx
add edi, eax
mov dword [esp], edi
mov edx, dword [esp + 0x4c]
jmp 0x411ccd
push 2
pop eax
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
jmp 0x411b51
mov dword [esp], ebx
mov ebx, dword [esp + 0x10]
mov edx, ebx
mov edi, dword [esp + 0x14]
mov ecx, edi
push dword [esp + 0x18]
call fcn.00419a04
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
cmp ebp, eax
jae 0x411cf8
movsd xmm1, qword [0x421350]
mov esi, dword [esp + 0x98]
jmp 0x411d3d
sub edi, ecx
cmp edi, ebx
movsd xmm1, qword [0x421350]
jne 0x411cef
cmp dword [esp + 0x50], eax
mov esi, dword [esp + 0x98]
jae 0x411d3d
mov edi, ecx
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x18]
rol eax, cl
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x4c]
push eax
call fcn.00419a04
mov ecx, edi
movsd xmm1, qword [0x421350]
add esp, 4
add ecx, eax
mov eax, ebp
sub eax, ecx
mov ecx, dword [esp + 0x20]
cmp eax, ecx
cmovbe eax, ecx
mov ecx, ebp
sub ecx, eax
mov edx, dword [esp]
add ecx, edx
cmp edx, esi
ja 0x411d88
cmp ecx, esi
jb 0x411d88
sub ebp, esi
mov ebx, dword [esp]
add ebx, ebp
mov eax, ebx
not eax
mov ecx, dword [esp + 0x30]
add eax, ecx
cmp eax, 3
cmovb ebx, ecx
xor esi, esi
push 2
pop eax
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x411865
mov edx, eax
not edx
mov ebx, dword [esp + 0x30]
add edx, ebx
xor esi, esi
push 2
pop edi
mov dword [esp + 0x6c], edi
cmp edx, 3
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jb 0x411865
mov edx, dword [esp + 0x98]
cmp ecx, edx
cmovae ecx, edx
cmp ebp, ecx
jae 0x411df7
mov ebx, dword [esp + 4]
sub ebx, eax
mov edi, ebp
cmp ebx, 0xffff
jbe 0x411dfd
jmp 0x411efc
lea eax, [ebp - 1]
cmp ebx, eax
jae 0x411e8a
movzx eax, word [edi]
cmp ax, word [ebx]
mov edx, dword [esp + 0xc]
jne 0x411e8e
add ebx, 2
add edi, 2
jmp 0x411e8e
mov ebx, dword [esp + 0x68]
mov ecx, ebp
movzx edx, ax
mov edi, dword [esp + 0x1c]
movzx edx, word [edi + edx*2 + 0x20000]
mov dword [esp + 0x68], ebx
push 2
pop edi
mov dword [esp + 0x6c], edi
mov ebp, ecx
mov edi, ecx
sub eax, edx
mov edx, dword [esp + 0xc]
mov ebx, eax
jae 0x411865
jmp 0x411efc
cmp ebx, dword [esp + 0xcc]
jae 0x411eb1
movzx ecx, word [eax]
cmp cx, word [ebx]
mov ebp, dword [esp + 8]
jne 0x411eb5
add ebx, 2
add eax, 2
jmp 0x411eb5
cmp eax, dword [esp + 0xcc]
jae 0x411e62
movzx ecx, word [edi]
cmp cx, word [eax]
jne 0x411e62
add eax, 2
add edi, 2
cmp eax, dword [esp + 0x24]
jae 0x411e73
mov cl, byte [edi]
xor ebx, ebx
cmp cl, byte [eax]
sete bl
add eax, ebx
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
sub eax, dword [esp + 0x8c]
jmp 0x411c16
mov edx, dword [esp + 0xc]
cmp ebx, ebp
jae 0x411e9d
mov al, byte [edi]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov ebp, dword [esp + 8]
mov ecx, dword [esp]
mov edi, dword [esp + 0x14]
sub ebx, dword [esp + 0x58]
jmp 0x411a53
mov ebp, dword [esp + 8]
cmp ebx, dword [esp + 0x24]
jae 0x411ec6
mov al, byte [eax]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov ecx, dword [esp]
sub ebx, dword [esp + 0x58]
jmp 0x411bee
mov dword [esp + 8], ebp
mov ebx, ecx
jmp 0x411b7a
mov edi, ebp
lea eax, [edi - 0x13]
cmp eax, 0x12
mov ecx, edi
push 0x12
pop eax
cmovb ecx, eax
cmp byte [esp + 0x74], 0
cmove ecx, edi
cmp edi, 3
jmp 0x411f16
mov edi, ebp
lea eax, [edi - 0x13]
cmp eax, 0x12
mov ecx, edi
push 0x12
pop eax
cmovb ecx, eax
cmp byte [esp + 0x74], 0
cmove ecx, edi
cmp edi, dword [esp + 0x28]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x1c]
jle 0x411f28
test ecx, ecx
jne 0x411f4d
dec dword [esp + 0x70]
inc dword [esp + 0x9c]
add dword [esp + 0xa0], 0x10
add dword [esp + 0x48], 0x10
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x7c]
jmp 0x410f9b
cmp ecx, dword [esp + 0xb0]
ja 0x41242e
mov ebx, dword [esp + 0xac]
lea eax, [ecx + ebx]
cmp eax, 0xfff
mov edi, dword [esp + 0x54]
jg 0x41244a
mov eax, dword [esp + 0xc8]
lea edx, [edi + eax]
mov dword [esp + 0xc], edx
mov edi, dword [edi + eax + 0xc]
lea eax, [edi - 0xf]
xor edx, edx
mov esi, 0xff
div esi
cmp edi, 0xf
lea edx, [edi + eax + 1]
cmovl edx, edi
mov eax, edi
mov dword [esp + 0x14], edi
lea esi, [edi + 1]
mov dword [esp + 0x44], edx
sub dword [esp + 0x60], edx
push 3
pop ebx
xor ebp, ebp
inc ebp
mov dword [esp], ebp
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0xa0]
sub ebx, 1
jb 0x41200d
mov eax, esi
cmp esi, 0xf
jl 0x411ff0
mov eax, dword [esp + 0x14]
mov edx, dword [esp]
add eax, edx
mov dword [esp + 4], eax
lea eax, [esi - 0xf]
xor edx, edx
mov edi, 0xff
div edi
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 4]
add eax, edx
inc eax
add eax, dword [esp + 0x60]
cmp eax, dword [ebp]
jge 0x412004
movsd qword [ebp + 4], xmm1
mov dword [ebp + 0xc], esi
mov dword [ebp], eax
inc dword [esp]
add ebp, 0x10
inc esi
jmp 0x411fc0
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0xc8]
add edx, eax
add edx, 8
mov dword [esp + 4], edx
mov edx, dword [esp + 0xac]
sub edx, dword [esp + 0x14]
shl edx, 4
add edx, eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x44]
lea edx, [eax + 3]
mov dword [esp + 8], edx
add eax, 4
mov dword [esp + 0x44], eax
push 4
pop ebx
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x48]
cmp ebx, ecx
jg 0x412138
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xac]
lea esi, [eax + ebx]
mov edx, dword [esp + 4]
cmp dword [edx], 1
jne 0x4120af
xor ebp, ebp
cmp eax, dword [esp + 0x14]
jle 0x412083
mov eax, dword [esp + 0x18]
mov ebp, dword [eax]
mov eax, dword [esp + 8]
cmp ebx, 0x13
jb 0x4120a4
lea eax, [ebx - 0x13]
xor edx, edx
mov dword [esp + 0x38], edi
mov edi, 0xff
div edi
mov edi, dword [esp + 0x38]
add eax, dword [esp + 0x44]
add eax, ebp
mov edx, dword [esp + 0x14]
mov dword [esp], edx
jmp 0x4120dd
mov eax, dword [esp + 0xc]
mov ebp, dword [eax]
push 3
pop eax
cmp ebx, 0x13
jb 0x4120d4
lea eax, [ebx - 0x13]
xor edx, edx
mov dword [esp + 0x38], edi
mov edi, 0xff
div edi
mov edi, dword [esp + 0x38]
add eax, 4
add eax, ebp
mov dword [esp], 0
mov edx, edi
add edi, 3
cmp esi, edi
mov ebp, dword [esp + 0x1c]
jg 0x412107
mov edi, dword [esp + 0x48]
mov edi, dword [edi]
add edi, dword [esp + 0x90]
cmp eax, edi
jle 0x412107
mov esi, dword [esp + 0x10]
mov edi, edx
mov eax, dword [esp + 0x48]
jmp 0x41212f
mov edi, edx
cmp edx, esi
cmovge esi, edx
cmp ecx, ebx
cmove edi, esi
mov edx, dword [esp + 0x48]
mov dword [edx + 8], ebx
mov esi, dword [esp + 0x68]
mov dword [edx + 4], esi
mov esi, dword [esp]
mov dword [edx + 0xc], esi
mov dword [edx], eax
mov eax, edx
mov esi, dword [esp + 0x10]
inc ebx
add eax, 0x10
jmp 0x412056
mov eax, edi
shl eax, 4
mov ecx, dword [esp + 0x54]
add ecx, eax
add eax, dword [esp + 0xe0]
xor edx, edx
inc edx
cmp edx, 4
je 0x41216a
movsd qword [eax - 8], xmm1
mov dword [eax], edx
mov esi, dword [ecx]
add esi, edx
mov dword [eax - 0xc], esi
mov esi, dword [esp + 0x10]
inc edx
add eax, 0x10
jmp 0x41214d
mov ecx, dword [esp + 0x7c]
jmp 0x410f59
mov eax, edi
shl eax, 4
mov edx, edi
mov edi, dword [esp + 0x54]
mov ebp, dword [edi + eax + 4]
mov ecx, dword [edi + eax + 8]
mov ebx, edx
sub ebx, ecx
mov eax, ebx
shl eax, 4
mov edx, dword [edi + eax + 4]
mov esi, dword [edi + eax + 8]
mov dword [edi + eax + 8], ecx
mov dword [edi + eax + 4], ebp
mov ecx, esi
mov ebp, edx
sub ebx, esi
jge 0x41218a
xor edx, edx
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x88]
mov ecx, ebx
shl cl, 4
mov ch, bl
sub ch, al
mov esi, eax
shl al, 4
sub cl, al
mov dword [esp + 0x34], ebx
mov eax, ebx
mov dword [esp + 0x88], esi
sub eax, esi
mov ebp, edx
shl ebp, 4
add ebp, dword [esp + 0x80]
add ch, 0xf1
xor esi, esi
lea ebx, [edx + esi]
cmp ebx, dword [esp + 0x38]
jge 0x412361
mov edi, dword [ebp]
cmp edi, 1
jne 0x412205
inc esi
add cl, 0x10
inc eax
add ebp, 0x10
inc ch
jmp 0x4121e4
mov dword [esp], edi
mov edx, dword [esp + 0x34]
sub edx, dword [esp + 0x88]
mov dword [esp + 0x14], edx
xor edx, edx
mov edi, 0xff
div edi
mov edx, dword [ebp - 4]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x48], edx
cmp dword [esp + 0x114], 0
mov edi, esi
je 0x412251
mov edx, dword [esp + 0x64]
add edx, ebp
add eax, edx
add eax, edi
add eax, 9
cmp eax, dword [esp + 0x84]
ja 0x41437e
lea eax, [edi + ebp]
cmp eax, 0xf
mov edx, ebp
jb 0x412281
lea eax, [edx + edi]
add eax, 0xfffffff1
mov ecx, dword [esp + 0x64]
mov byte [ecx], 0xf0
lea ebp, [ecx + 2]
mov ecx, dword [esp]
cmp eax, 0xff
jb 0x41228f
mov byte [ebp - 1], 0xff
add eax, 0xffffff01
inc ebp
jmp 0x41226e
mov eax, dword [esp + 0x64]
lea ebp, [eax + 1]
mov byte [eax], cl
mov ecx, dword [esp]
jmp 0x412292
mov byte [ebp - 1], al
add ebx, ecx
lea ecx, [esi + ebp]
mov edi, edx
add ecx, edx
mov eax, dword [esp + 0x88]
mov edx, ebp
movsd xmm0, qword [eax]
movsd qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, ecx
jb 0x4122a4
add ebp, edi
mov eax, dword [esp]
add eax, 0xfffffffc
mov dword [esp + 0x14], eax
xor edx, edx
mov edi, 0xff
div edi
mov edx, dword [esp + 0x48]
mov word [ecx], dx
cmp dword [esp + 0x114], 0
mov edi, esi
je 0x4122f3
lea ecx, [edi + ebp]
add eax, ecx
add eax, 8
cmp eax, dword [esp + 0x84]
ja 0x41437e
lea eax, [edi + ebp]
add eax, 2
mov edi, dword [esp + 0x64]
mov cl, byte [edi]
mov ebp, dword [esp + 0x14]
cmp ebp, 0xf
jb 0x41232a
add cl, 0xf
mov byte [edi], cl
mov ecx, dword [esp]
add ecx, 0xffffffed
cmp ecx, 0x1fe
jb 0x412332
or word [eax], 0xffff
add eax, 2
add ecx, 0xfffffe02
jmp 0x412313
mov edx, ebp
add cl, dl
mov byte [edi], cl
jmp 0x412347
cmp ecx, 0xff
jb 0x412344
add ecx, 0xffffff01
mov byte [eax], 0xff
inc eax
mov byte [eax], cl
inc eax
add esi, dword [esp]
mov ecx, dword [esp + 0x34]
add ecx, esi
mov edx, ecx
mov dword [esp + 0x64], eax
mov eax, ecx
mov edx, ebx
mov ebx, ecx
jmp 0x4121b4
mov eax, dword [esp + 0x34]
add eax, esi
mov edx, eax
mov ecx, dword [esp + 0x88]
jmp 0x410556
mov esi, dword [esp + 0x64]
lea eax, [esi + 1]
mov edx, ebx
shl dl, 4
mov byte [esi], dl
jmp 0x412388
mov byte [eax - 1], dl
add ebx, eax
mov edx, dword [esp + 0x88]
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ebx
jb 0x412391
mov edi, ebx
lea ebx, [ecx - 4]
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x48]
mov word [edi], dx
cmp dword [esp + 0x114], 0
je 0x4123d6
add eax, edi
add eax, 8
cmp eax, dword [esp + 0x84]
ja 0x414379
add edi, 2
mov esi, edi
mov edx, dword [esp + 0x64]
mov al, byte [edx]
cmp ebx, 0xf
jb 0x412402
add al, 0xf
mov byte [edx], al
lea eax, [ecx - 0x13]
cmp eax, 0x1fe
jb 0x412408
or word [esi], 0xffff
add esi, 2
add eax, 0xfffffe02
jmp 0x4123ed
add al, bl
mov byte [edx], al
jmp 0x41241b
cmp eax, 0xff
jb 0x412418
add eax, 0xffffff01
mov byte [esi], 0xff
inc esi
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x34]
add eax, ecx
mov edx, eax
mov dword [esp + 0x64], esi
mov ecx, eax
jmp 0x410556
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0xac]
mov ebp, dword [esp + 0x68]
jmp 0x41218a
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x38], eax
mov ebp, dword [esp + 0x68]
jmp 0x41218a
xor eax, eax
mov ebx, dword [esp + 0x114]
cmp ebx, 2
setne al
add esi, ebp
mov edx, dword [esp + 0x108]
and dword [edx], 0
lea eax, [eax + eax*4]
add eax, esi
add eax, 0xfffffffb
mov dword [esp + 0x84], eax
mov edx, ecx
mov dword [esp + 0x2c], ebp
cmp edi, 0xd
jb 0x41478d
mov eax, ebp
lea edx, [ecx + edi]
add edx, 0xfffffffb
lea esi, [edx - 3]
mov dword [esp], esi
mov dword [esp + 0x20], edx
dec edx
mov dword [esp + 0xb0], edx
mov dword [esp + 0x6c], edi
lea edx, [edi + ecx - 5]
mov dword [esp + 0xd4], edx
mov dword [esp + 0x5c], 0
mov edx, ecx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0xa8], 0
push 0xfffffffffffffffc
pop eax
sub eax, edx
mov dword [esp + 0x7c], eax
mov eax, edx
mov dword [esp + 0x60], edx
mov dword [esp + 0x58], edx
cmp eax, dword [esp + 0xdc]
ja 0x414782
mov edi, dword [esp + 0x1c]
mov esi, dword [edi + 0x40004]
mov ecx, dword [edi + 0x40008]
mov dword [esp + 0x34], ecx
mov ecx, dword [edi + 0x4000c]
mov ebx, eax
sub ebx, esi
add ebx, ecx
mov edx, dword [edi + 0x40010]
mov dword [esp + 0x30], edx
mov dword [esp + 0x3c], eax
mov eax, dword [eax]
mov dword [esp + 0x74], eax
mov dword [esp + 0x38], esi
mov eax, esi
mov dword [esp + 8], ecx
sub eax, ecx
mov ecx, dword [edi + 0x40014]
cmp ecx, ebx
jae 0x412576
imul edx, dword [eax + ecx], 0x9e3779b1
shr edx, 0x11
mov esi, ecx
mov edi, dword [esp + 0x1c]
sub esi, dword [edi + edx*4]
mov edi, 0xffff
cmp esi, edi
jb 0x412561
mov esi, 0xffff
and edi, ecx
mov ebp, dword [esp + 0x1c]
mov word [ebp + edi*2 + 0x20000], si
mov dword [ebp + edx*4], ecx
inc ecx
jmp 0x41253c
mov ecx, dword [esp + 0x30]
lea eax, [ecx + 0x10000]
lea edx, [ebx - 0xffff]
cmp eax, ebx
cmova edx, ecx
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 8]
add eax, ebx
sub eax, ecx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x40014], eax
mov edi, dword [esp + 0x3c]
imul eax, dword [edi], 0x9e3779b1
shr eax, 0x11
mov esi, dword [ecx + eax*4]
lea eax, [edi + 4]
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x74]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
xor edx, eax
lea eax, [edi + 8]
mov dword [esp + 0x48], eax
or edx, ecx
lea eax, [ebx - 4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x38]
lea eax, [eax + 4]
mov dword [esp + 0xbc], eax
sete byte [esp + 0x94]
mov eax, dword [esp + 0x60]
lea eax, [ebx + eax]
mov dword [esp + 0x70], eax
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x14], eax
push 3
pop eax
mov dword [esp + 4], eax
cmp esi, dword [esp + 0xc]
jb 0x412adb
cmp dword [esp + 0x14], 0
jle 0x412adb
mov eax, dword [esp + 8]
mov ebp, eax
sub ebp, esi
mov dword [esp + 0x44], ebp
jbe 0x4126b5
cmp esi, dword [esp + 0x40]
ja 0x41281d
mov ecx, esi
sub ecx, dword [esp + 0x30]
add ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x74]
cmp dword [ecx], eax
jne 0x41281d
mov eax, dword [esp + 0x3c]
lea edi, [eax + ebp]
mov eax, dword [esp + 0x20]
cmp edi, eax
mov edx, edi
cmova edx, eax
add ecx, 4
mov dword [esp + 0x50], edx
lea eax, [edx - 3]
mov edx, dword [esp + 0x28]
cmp eax, edx
jbe 0x41270d
mov edx, dword [edx]
xor edx, dword [ecx]
je 0x412706
bsf edx, edx
shr edx, 3
jmp 0x412739
mov edx, esi
sub edx, eax
add edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 4]
movzx eax, word [eax + ecx - 1]
cmp ax, word [ecx + edx - 1]
jne 0x41281d
mov eax, dword [esp + 0x74]
cmp dword [edx], eax
jne 0x41281d
add edx, 4
mov ecx, dword [esp + 0x28]
cmp dword [esp], ecx
jbe 0x412790
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x412789
bsf ecx, eax
shr ecx, 3
jmp 0x4127f2
add ecx, 4
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x7c]
lea ebp, [ebx + edx]
cmp edx, eax
jae 0x412a2c
mov ebx, dword [edx]
xor ebx, dword [ecx]
jne 0x41272d
add edx, 4
add ecx, 4
add ebp, 4
jmp 0x412714
bsf edx, ebx
shr edx, 3
add edx, ebp
mov ebx, dword [esp + 0x10]
lea ecx, [edx + 4]
cmp edi, dword [esp + 0x20]
jae 0x412773
mov eax, dword [esp + 0x3c]
add eax, edx
add eax, 4
mov ebx, dword [esp + 0x50]
cmp eax, ebx
jne 0x41277c
mov eax, dword [esp + 0x38]
mov edi, eax
mov edx, ebx
cmp dword [esp], ebx
jbe 0x4127ba
mov edx, eax
mov eax, dword [ebx]
xor eax, dword [edx]
je 0x4127b0
bsf edx, eax
shr edx, 3
jmp 0x412803
mov eax, dword [esp + 4]
jmp 0x41280d
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x10]
jmp 0x41280d
add edx, 4
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x7c]
add eax, ecx
cmp ecx, dword [esp]
jae 0x412a4d
mov edi, dword [ecx]
xor edi, dword [edx]
jne 0x4127ea
add ecx, 4
add edx, 4
add eax, 4
jmp 0x412796
lea edx, [ebx + 4]
mov edi, dword [esp + 0xbc]
mov ebx, dword [esp + 0x70]
sub ebx, esi
mov eax, dword [esp + 0xd4]
cmp ebx, eax
cmovae ebx, eax
mov eax, edx
sub eax, ebx
cmp edx, dword [esp]
jae 0x412a82
mov ebx, dword [edx]
xor ebx, dword [edi]
jne 0x4127fb
add edx, 4
add edi, 4
add eax, 4
jmp 0x4127d0
bsf ecx, edi
shr ecx, 3
add ecx, eax
mov eax, dword [esp + 4]
add ecx, 4
jmp 0x41280d
bsf edx, ebx
shr edx, 3
add edx, eax
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x10]
add ecx, edx
cmp ecx, eax
jle 0x41281d
mov eax, ebx
sub eax, esi
mov dword [esp + 0x4c], eax
mov dword [esp + 4], ecx
dec dword [esp + 0x14]
movzx eax, si
mov ecx, dword [esp + 0x1c]
movzx ebp, word [ecx + eax*2 + 0x20000]
cmp dword [esp + 0xc0], 0x81
jl 0x412921
cmp bp, 1
jne 0x412921
mov eax, dword [esp + 0x18]
test eax, eax
je 0x412874
cmp eax, 2
jne 0x41286b
lea edi, [esi - 1]
cmp edi, dword [esp + 0xc]
jb 0x41286b
cmp dword [esp + 0x44], 3
jae 0x4128a7
push 2
pop eax
mov dword [esp + 0x18], eax
jmp 0x412921
xor eax, eax
inc eax
mov dword [esp + 0x18], eax
cmp byte [esp + 0x94], 0
je 0x412921
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
push dword [esp + 0x74]
call fcn.004199cd
pop ecx
add eax, 4
mov dword [esp + 0x24], eax
push 2
pop eax
jmp 0x412853
mov eax, edi
sub eax, dword [esp + 0x30]
add eax, dword [esp + 0x34]
mov ecx, edi
sub ecx, dword [esp + 8]
mov edx, dword [esp + 0x38]
lea ebx, [edx + ecx]
cmovb ebx, eax
mov eax, dword [esp + 0x74]
cmp dword [ebx], eax
jne 0x412916
cmp edi, dword [esp + 8]
mov ebp, dword [esp + 0x20]
cmovb ebp, dword [esp + 0x68]
lea ecx, [ebx + 4]
mov edx, ebp
push eax
call fcn.004199cd
pop ecx
lea esi, [eax + 4]
cmp edi, dword [esp + 8]
jae 0x41292b
lea ecx, [ebx + esi]
cmp ecx, ebp
jne 0x412910
shl eax, 3
mov edx, dword [esp + 0x74]
mov ecx, eax
rol edx, cl
mov eax, edx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x20]
push eax
call fcn.004199cd
pop ecx
add esi, eax
mov edx, dword [esp + 0x34]
jmp 0x41292f
push 2
pop eax
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x10]
movzx eax, bp
sub esi, eax
jmp 0x41263d
mov edx, dword [esp + 0x38]
mov ecx, ebx
push dword [esp + 0x74]
call fcn.00419a04
pop ecx
mov ebp, eax
cmp edi, dword [esp + 8]
jae 0x412949
mov ebx, dword [esp + 0x10]
jmp 0x41297d
sub ebx, ebp
cmp ebx, dword [esp + 0x38]
jne 0x412943
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jae 0x41297d
mov ecx, ebp
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x74]
rol eax, cl
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x34]
push eax
call fcn.00419a04
pop ecx
add ebp, eax
mov ecx, edi
sub ecx, ebp
mov eax, dword [esp + 0xc]
cmp ecx, eax
cmovbe ecx, eax
mov edx, edi
sub edx, ecx
add edx, esi
mov eax, dword [esp + 0x24]
cmp esi, eax
ja 0x4129bc
cmp edx, eax
jb 0x4129bc
sub edi, eax
add esi, edi
mov eax, esi
not eax
mov ecx, dword [esp + 8]
add eax, ecx
cmp eax, 3
cmovb esi, ecx
push 2
pop eax
mov dword [esp + 0x18], eax
jmp 0x41263d
mov eax, ecx
not eax
mov edi, dword [esp + 8]
add eax, edi
push 2
pop esi
mov dword [esp + 0x18], esi
mov esi, edi
cmp eax, 3
jb 0x41263d
mov eax, dword [esp + 0x24]
cmp edx, eax
cmovae edx, eax
mov esi, dword [esp + 4]
cmp esi, edx
jae 0x4129f9
mov eax, ebx
sub eax, ecx
cmp eax, 0xffff
jbe 0x4129ff
jmp 0x412adb
mov eax, dword [esp + 0x4c]
mov edx, esi
movzx esi, cx
mov edi, dword [esp + 0x1c]
movzx esi, word [edi + esi*2 + 0x20000]
mov dword [esp + 0x4c], eax
push 2
pop eax
mov dword [esp + 0x18], eax
mov dword [esp + 4], edx
sub ecx, esi
mov esi, ecx
jae 0x41263d
jmp 0x412adb
mov eax, dword [esp + 0x50]
dec eax
cmp edx, eax
jae 0x412abb
movzx eax, word [ecx]
cmp ax, word [edx]
mov ebx, dword [esp + 0x10]
jne 0x412abf
add edx, 2
add ecx, 2
jmp 0x412abf
cmp ecx, dword [esp + 0xb0]
jae 0x412a64
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x412a64
add ecx, 2
add edx, 2
cmp ecx, dword [esp + 0x20]
jae 0x412a75
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov eax, dword [esp + 4]
sub ecx, dword [esp + 0x28]
jmp 0x4127f6
cmp edx, dword [esp + 0xb0]
jae 0x412a99
movzx eax, word [edi]
cmp ax, word [edx]
jne 0x412a99
add edx, 2
add edi, 2
cmp edx, dword [esp + 0x20]
jae 0x412aaa
mov al, byte [edi]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x10]
sub edx, dword [esp + 0x50]
jmp 0x41280b
mov ebx, dword [esp + 0x10]
cmp edx, dword [esp + 0x50]
jae 0x412ad0
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov eax, dword [esp + 0x28]
sub edx, eax
jmp 0x412739
mov eax, dword [esp + 4]
cmp eax, 4
jge 0x412b01
mov eax, dword [esp + 0x3c]
inc eax
dec dword [esp + 0x7c]
inc dword [esp + 0x60]
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x58]
jmp 0x4124e9
mov ecx, dword [esp + 0x58]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x88], eax
mov edx, eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x60], ecx
mov dword [esp + 0x10], edx
lea eax, [edx + ecx]
mov dword [esp + 0x4c], 0
mov dword [esp + 4], 0
mov dword [esp + 0x58], eax
cmp eax, dword [esp + 0xdc]
jbe 0x412baf
mov eax, dword [esp + 0x60]
cmp dword [esp + 4], eax
jle 0x413f8a
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x88]
cmp edi, esi
setb cl
mov eax, dword [esp + 0x78]
add eax, esi
mov edx, dword [esp + 0x3c]
cmp edx, eax
setb al
and al, cl
cmovne esi, edi
mov ecx, edx
sub ecx, esi
cmp ecx, 3
jl 0x412b38
jmp 0x413386
mov edx, dword [esp + 0x58]
lea eax, [edx - 2]
mov edi, dword [esp + 0x1c]
mov ecx, dword [edi + 0x40004]
mov esi, dword [edi + 0x40008]
mov dword [esp + 0x24], esi
mov esi, dword [edi + 0x4000c]
mov dword [esp + 0x40], eax
sub eax, ecx
add eax, esi
mov dword [esp + 0x34], eax
mov eax, esi
neg eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x38], esi
sub ecx, esi
mov esi, dword [edi + 0x40010]
mov dword [esp + 0x7c], esi
mov eax, dword [edx - 2]
mov dword [esp + 0x28], eax
mov edx, dword [edi + 0x40014]
cmp edx, dword [esp + 0x34]
jae 0x412c40
imul esi, dword [ecx + edx], 0x9e3779b1
shr esi, 0x11
mov edi, edx
mov eax, dword [esp + 0x1c]
sub edi, dword [eax + esi*4]
mov ebx, 0xffff
cmp edi, ebx
jb 0x412c2c
mov edi, 0xffff
and ebx, edx
mov eax, dword [esp + 0x1c]
mov word [eax + ebx*2 + 0x20000], di
mov dword [eax + esi*4], edx
inc edx
jmp 0x412c05
mov esi, dword [esp + 0x7c]
lea ecx, [esi + 0x10000]
mov edx, dword [esp + 0x34]
lea eax, [edx - 0xffff]
cmp ecx, edx
cmova eax, esi
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
add eax, ecx
sub eax, esi
mov dword [esp + 0xb8], eax
mov ebp, dword [esp + 0x10]
mov eax, ebp
mov ebx, dword [esp + 0x40]
sub eax, ebx
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x40014], edx
mov eax, dword [esp + 0x28]
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 edi, dword [esp + 0x60]
lea eax, [edi + ebp]
add eax, 0xfffffffd
mov dword [esp + 0x44], eax
imul ecx, dword [eax + 1], 0x9e3779b1
shr ecx, 0x11
or esi, edx
lea edx, [ebp + edi]
sete byte [esp + 0xbc]
push 0xfffffffffffffffe
pop esi
sub esi, edx
mov dword [esp + 0x2c], esi
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + ecx*4]
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x14]
lea eax, [ecx + eax - 1]
mov dword [esp + 0xc8], eax
mov esi, dword [esp + 0x38]
lea eax, [edi + esi]
lea eax, [ebp + eax - 2]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x7c]
not eax
add eax, dword [esp + 0x24]
mov dword [esp + 0xac], eax
lea eax, [ebx - 4]
mov dword [esp + 0x14], eax
lea eax, [ebx + 4]
mov dword [esp + 0x68], eax
lea eax, [ebx + 8]
mov dword [esp + 0xc4], eax
lea eax, [esi - 4]
mov dword [esp + 0x5c], eax
lea eax, [ecx + 4]
mov dword [esp + 0xd8], eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x8c], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0xc0]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
cmp edx, dword [esp + 0x74]
jb 0x412b6f
cmp dword [esp + 8], 0
jle 0x412b6f
mov ecx, dword [esp + 0x38]
mov eax, ecx
sub eax, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
jbe 0x412df2
cmp edx, dword [esp + 0x5c]
ja 0x412fc3
sub edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x24]
lea esi, [eax + edx]
mov eax, dword [esp + 0x28]
cmp dword [esi], eax
jne 0x412e66
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x18]
lea ebx, [eax + ecx]
mov eax, dword [esp + 0x20]
cmp ebx, eax
mov edi, ebx
cmova edi, eax
mov dword [esp + 0x48], esi
lea ecx, [esi + 4]
mov dword [esp + 0x70], edi
lea ebp, [edi - 3]
mov eax, dword [esp + 0x68]
cmp ebp, eax
jbe 0x412e79
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x412e6f
bsf eax, eax
shr eax, 3
jmp 0x412ea0
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x50]
lea edx, [ecx + eax]
mov edi, dword [esp + 4]
mov ecx, dword [esp + 0x10]
movzx ecx, word [ecx + edi - 1]
mov esi, dword [esp + 0x94]
add esi, edx
cmp cx, word [edi + esi - 1]
jne 0x412e66
mov ecx, dword [esp + 0x28]
cmp dword [edx], ecx
jne 0x412e66
mov ecx, dword [esp + 0x40]
cmp ecx, dword [esp + 0x10]
je 0x412ed9
neg eax
mov ecx, dword [esp + 0x94]
cmp ecx, eax
cmovg eax, ecx
mov esi, eax
neg esi
xor ecx, ecx
lea edi, [esi + ecx]
cmp edi, 3
jle 0x4130e4
mov ebx, dword [edx + ecx - 4]
mov edi, dword [esp + 0x14]
xor ebx, dword [edi + ecx]
jne 0x413112
add ecx, 0xfffffffc
jmp 0x412e44
mov edx, dword [esp + 0xc]
jmp 0x412fc3
add ecx, 4
mov eax, dword [esp + 0xc4]
mov esi, dword [esp + 0x2c]
add esi, eax
cmp eax, ebp
jae 0x4132bb
mov edi, dword [eax]
xor edi, dword [ecx]
jne 0x412e98
add eax, 4
add ecx, 4
add esi, 4
jmp 0x412e7f
bsf eax, edi
shr eax, 3
add eax, esi
mov ebp, dword [esp + 0x48]
lea ecx, [eax + 4]
cmp ebx, dword [esp + 0x20]
jae 0x412f2a
mov esi, dword [esp + 0x40]
add eax, esi
add eax, 4
mov ebx, dword [esp + 0x70]
cmp eax, ebx
jne 0x412f2a
mov edi, dword [esp + 0x50]
mov esi, edi
mov eax, ebx
cmp dword [esp], ebx
jbe 0x412eea
mov eax, dword [ebx]
xor eax, dword [edi]
je 0x412ee0
bsf eax, eax
shr eax, 3
jmp 0x412f28
xor edi, edi
jmp 0x41311f
lea eax, [ebx + 4]
mov esi, dword [esp + 0xd8]
mov edi, dword [esp + 0x54]
sub edi, dword [esp + 0xc]
mov ebp, dword [esp + 0xd4]
cmp edi, ebp
cmovae edi, ebp
mov ebp, eax
sub ebp, edi
cmp eax, dword [esp]
jae 0x4132d8
mov edi, dword [eax]
xor edi, dword [esi]
jne 0x412f1c
add eax, 4
add esi, 4
add ebp, 4
jmp 0x412f02
bsf eax, edi
shr eax, 3
add eax, ebp
mov ebp, dword [esp + 0x48]
add ecx, eax
mov eax, dword [esp + 0x40]
cmp eax, dword [esp + 0x10]
je 0x412f62
neg edx
mov eax, dword [esp + 0x94]
cmp eax, edx
cmovg edx, eax
mov esi, edx
neg esi
xor eax, eax
lea edi, [esi + eax]
cmp edi, 3
jle 0x412f66
mov edi, dword [ebp + eax - 4]
mov ebx, dword [esp + 0x14]
xor edi, dword [ebx + eax]
jne 0x412f94
add eax, 0xfffffffc
jmp 0x412f48
xor edi, edi
jmp 0x412fa1
cmp edx, eax
mov edi, eax
cmovl edi, edx
mov esi, dword [esp + 0xac]
mov ebx, dword [esp + 0xc]
add esi, ebx
cmp eax, edx
jle 0x412fa1
lea ebp, [eax - 1]
mov ebx, dword [esp + 0x44]
mov bl, byte [ebx + eax]
cmp bl, byte [esi + eax]
mov eax, ebp
je 0x412f7a
inc ebp
mov edi, ebp
jmp 0x412fa1
bsr edx, edi
xor edx, 0x18
shr edx, 3
sub eax, edx
mov edi, eax
sub ecx, edi
cmp ecx, dword [esp + 4]
mov edx, dword [esp + 0xc]
jle 0x412fc3
mov eax, dword [esp + 0x34]
sub eax, edx
mov dword [esp + 0x4c], eax
add edi, dword [esp + 0x40]
mov dword [esp + 0x3c], edi
mov dword [esp + 4], ecx
dec dword [esp + 8]
movzx eax, dx
mov ecx, dword [esp + 0x1c]
movzx ebp, word [ecx + eax*2 + 0x20000]
cmp dword [esp + 0xc0], 0x81
jl 0x4130da
cmp bp, 1
jne 0x4130da
mov eax, dword [esp + 0x30]
test eax, eax
je 0x41301a
cmp eax, 2
jne 0x413011
lea esi, [edx - 1]
cmp esi, dword [esp + 0x74]
jb 0x413011
cmp dword [esp + 0x18], 3
jae 0x413056
push 2
pop eax
mov dword [esp + 0x30], eax
jmp 0x4130da
xor eax, eax
inc eax
mov dword [esp + 0x30], eax
cmp byte [esp + 0xbc], 0
je 0x4130da
mov ecx, dword [esp + 0x68]
mov esi, edx
mov edx, dword [esp + 0x20]
push dword [esp + 0x28]
call fcn.004199cd
mov edx, esi
add esp, 4
add eax, 4
mov dword [esp + 0x8c], eax
push 2
pop eax
jmp 0x412ff9
mov eax, esi
sub eax, dword [esp + 0x7c]
add eax, dword [esp + 0x24]
mov ecx, esi
mov edi, dword [esp + 0x38]
sub ecx, edi
mov edx, dword [esp + 0x50]
lea ebx, [edx + ecx]
cmovb ebx, eax
mov eax, dword [esp + 0x28]
cmp dword [ebx], eax
jne 0x4130cf
cmp esi, edi
mov ebp, dword [esp + 0x20]
cmovb ebp, dword [esp + 0xb8]
lea ecx, [ebx + 4]
mov edx, ebp
push eax
call fcn.004199cd
pop ecx
lea edx, [eax + 4]
cmp esi, edi
jae 0x413185
lea ecx, [ebx + edx]
cmp ecx, ebp
mov edi, edx
jne 0x4130c6
shl eax, 3
mov edx, dword [esp + 0x28]
mov ecx, eax
rol edx, cl
mov eax, edx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x20]
push eax
call fcn.004199cd
pop ecx
add edi, eax
mov edx, dword [esp + 0x24]
jmp 0x41318b
push 2
pop eax
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0xc]
movzx eax, bp
sub edx, eax
jmp 0x412d65
cmp eax, ecx
mov edi, ecx
cmovl edi, eax
mov esi, dword [esp + 0xc8]
mov ebx, dword [esp + 0xc]
add esi, ebx
cmp ecx, eax
jle 0x41311f
lea ebp, [ecx - 1]
mov ebx, dword [esp + 0x44]
mov bl, byte [ebx + ecx]
cmp bl, byte [esi + ecx]
mov ecx, ebp
je 0x4130f8
inc ebp
mov edi, ebp
jmp 0x41311f
bsr eax, ebx
xor eax, 0x18
shr eax, 3
sub ecx, eax
mov edi, ecx
add edx, 4
mov ecx, dword [esp + 0x68]
cmp dword [esp], ecx
jbe 0x413143
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x413139
bsf ecx, eax
shr ecx, 3
jmp 0x41316b
add edx, 4
mov ecx, dword [esp + 0xc4]
mov eax, dword [esp + 0x2c]
add eax, ecx
cmp ecx, dword [esp]
jae 0x4132f5
mov esi, dword [ecx]
xor esi, dword [edx]
jne 0x413163
add ecx, 4
add edx, 4
add eax, 4
jmp 0x413149
bsf ecx, esi
shr ecx, 3
add ecx, eax
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xc]
sub ecx, edi
add ecx, 4
cmp ecx, eax
jg 0x412fad
jmp 0x412fc3
mov edi, edx
mov edx, dword [esp + 0x50]
mov ecx, ebx
push dword [esp + 0x28]
call fcn.00419a04
pop ecx
mov ebp, eax
mov eax, dword [esp + 0x38]
cmp esi, eax
jae 0x4131a5
mov edx, edi
jmp 0x4131da
sub ebx, ebp
cmp ebx, dword [esp + 0x50]
mov edx, edi
jne 0x4131da
cmp dword [esp + 0x7c], eax
jae 0x4131da
mov ecx, ebp
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x28]
rol eax, cl
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x24]
push eax
call fcn.00419a04
mov edx, edi
add esp, 4
add ebp, eax
mov eax, esi
sub eax, ebp
mov ecx, dword [esp + 0x74]
cmp eax, ecx
cmovbe eax, ecx
mov ecx, esi
sub ecx, eax
add ecx, edx
mov ebx, edx
mov edx, dword [esp + 0x8c]
cmp ebx, edx
ja 0x413220
cmp ecx, edx
jb 0x413220
sub esi, edx
mov edx, edi
add edx, esi
mov eax, edx
not eax
mov ecx, dword [esp + 0x38]
add eax, ecx
cmp eax, 3
cmovb edx, ecx
push 2
pop eax
mov dword [esp + 0x30], eax
jmp 0x412d65
mov edx, eax
not edx
mov edi, dword [esp + 0x38]
add edx, edi
push 2
pop esi
mov dword [esp + 0x30], esi
cmp edx, 3
mov edx, edi
jb 0x412d65
push 2
pop edx
mov dword [esp + 0x30], edx
mov esi, eax
mov edx, dword [esp + 0x40]
cmp edx, dword [esp + 0x10]
mov edx, eax
jne 0x412d65
mov edx, dword [esp + 0x8c]
cmp ecx, edx
cmovae ecx, edx
mov edi, dword [esp + 4]
cmp edi, ecx
jae 0x413280
mov edx, dword [esp + 0x34]
sub edx, eax
mov esi, dword [esp + 0x10]
cmp edx, 0xffff
jbe 0x41328a
jmp 0x412b6f
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x4c]
mov ecx, edi
movzx edi, ax
mov ebx, dword [esp + 0x1c]
movzx edi, word [ebx + edi*2 + 0x20000]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x4c], edx
push 2
pop edx
mov dword [esp + 0x30], edx
mov dword [esp + 4], ecx
sub eax, edi
mov edx, eax
jae 0x412d65
jmp 0x412b6f
mov esi, dword [esp + 0x70]
dec esi
cmp eax, esi
jae 0x41332e
movzx esi, word [ecx]
cmp si, word [eax]
mov ebp, dword [esp + 0x48]
jne 0x413332
add eax, 2
add ecx, 2
jmp 0x413332
cmp eax, dword [esp + 0xb0]
jae 0x41335d
movzx edi, word [esi]
cmp di, word [eax]
mov ebp, dword [esp + 0x48]
jne 0x413361
add eax, 2
add esi, 2
jmp 0x413361
cmp ecx, dword [esp + 0xb0]
jae 0x41330c
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x41330c
add ecx, 2
add edx, 2
cmp ecx, dword [esp + 0x20]
jae 0x41331d
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xc]
sub ecx, dword [esp + 0x68]
jmp 0x413173
mov ebp, dword [esp + 0x48]
cmp eax, dword [esp + 0x70]
jae 0x413354
mov cl, byte [ecx]
mov byte [esp + 0xb4], cl
mov cl, byte [esp + 0xb4]
cmp cl, byte [eax]
mov ecx, 0
sete cl
add eax, ecx
sub eax, dword [esp + 0x68]
jmp 0x412ea4
mov ebp, dword [esp + 0x48]
cmp eax, dword [esp + 0x20]
jae 0x41337d
mov bl, byte [esi]
mov byte [esp + 0x48], bl
mov bl, byte [esp + 0x48]
cmp bl, byte [eax]
mov ebx, 0
sete bl
add eax, ebx
sub eax, dword [esp + 0x70]
jmp 0x412f28
mov dword [esp + 0x54], esi
test al, al
mov eax, dword [esp + 0x9c]
cmovne eax, dword [esp + 0x64]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x60]
cmovne eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x90]
cmp eax, 0x12
mov esi, eax
push 0x12
pop eax
cmovl eax, esi
mov edi, dword [esp + 0x54]
mov dword [esp + 0xd0], eax
lea eax, [edi + eax]
mov dword [esp + 0x98], eax
lea eax, [edi + esi]
mov dword [esp + 0x60], esi
lea esi, [edi + esi + 3]
mov dword [esp + 0xb4], esi
mov esi, eax
mov eax, ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x90], edx
mov dword [esp + 0xa0], esi
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x64], ecx
mov ecx, eax
mov edi, dword [esp + 0x54]
sub ecx, edi
cmp ecx, 0x11
jg 0x413452
mov esi, dword [esp + 4]
lea edx, [eax + esi]
add edx, 0xfffffffc
cmp dword [esp + 0x98], edx
lea edx, [ecx + esi - 4]
cmovbe edx, dword [esp + 0xd0]
mov ecx, edi
sub ecx, eax
add ecx, edx
test ecx, ecx
jle 0x413456
add eax, ecx
sub esi, ecx
jmp 0x413456
mov esi, dword [esp + 4]
mov dword [esp + 0x78], esi
mov dword [esp + 0x5c], eax
add eax, esi
mov dword [esp + 0x4c], 0
mov dword [esp + 4], 0
mov dword [esp + 0x58], eax
cmp eax, dword [esp + 0xdc]
jbe 0x4134b2
mov eax, dword [esp + 0x78]
cmp dword [esp + 4], eax
jle 0x413ffa
mov ecx, dword [esp + 0x3c]
cmp ecx, dword [esp + 0xb4]
mov esi, dword [esp + 0xa0]
jae 0x413c92
mov eax, ecx
cmp ecx, esi
jb 0x41340c
jmp 0x413e24
mov edx, dword [esp + 0x58]
lea eax, [edx - 3]
mov edi, dword [esp + 0x1c]
mov ecx, dword [edi + 0x40004]
mov esi, dword [edi + 0x40008]
mov dword [esp + 0x50], esi
mov esi, dword [edi + 0x4000c]
mov dword [esp + 0x30], eax
sub eax, ecx
add eax, esi
mov ebx, esi
neg ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x38], esi
sub ecx, esi
mov esi, dword [edi + 0x40010]
mov dword [esp + 0x94], esi
mov edx, dword [edx - 3]
mov dword [esp + 0x40], edx
mov edx, dword [edi + 0x40014]
cmp edx, eax
jae 0x413541
imul esi, dword [ecx + edx], 0x9e3779b1
shr esi, 0x11
mov edi, edx
mov ebx, dword [esp + 0x1c]
sub edi, dword [ebx + esi*4]
mov ebx, 0xffff
cmp edi, ebx
jb 0x41352c
mov edi, 0xffff
and ebx, edx
mov ebp, dword [esp + 0x1c]
mov word [ebp + ebx*2 + 0x20000], di
mov dword [ebp + esi*4], edx
inc edx
jmp 0x413507
mov esi, dword [esp + 0x94]
lea ecx, [esi + 0x10000]
lea edx, [eax - 0xffff]
cmp ecx, eax
cmova edx, esi
mov dword [esp + 0x74], edx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x38]
add ecx, edx
sub ecx, esi
mov dword [esp + 0xb8], ecx
mov ebx, dword [esp + 0x5c]
mov ebp, ebx
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x40014], eax
mov eax, dword [esp + 0x40]
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 edi, dword [esp + 0x78]
lea eax, [ebx + edi]
add eax, 0xfffffffc
mov dword [esp + 0x44], eax
imul eax, dword [eax + 1], 0x9e3779b1
mov ecx, dword [esp + 0x30]
sub ebp, ecx
mov dword [esp + 0x10], ebp
shr eax, 0x11
or esi, edx
lea esi, [ebx + edi]
mov edx, dword [esp + 0x1c]
mov ebp, dword [edx + eax*4]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
lea eax, [edx + eax - 1]
mov dword [esp + 0x88], eax
not esi
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x38]
lea eax, [edi + esi]
lea eax, [ebx + eax - 3]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x94]
not eax
sete byte [esp + 0xbc]
add eax, dword [esp + 0x50]
mov dword [esp + 0xac], eax
lea eax, [ecx - 4]
mov dword [esp + 0x14], eax
lea eax, [ecx + 4]
mov dword [esp + 0x48], eax
lea eax, [ecx + 8]
mov dword [esp + 0xc4], eax
lea eax, [esi - 4]
mov dword [esp + 0x7c], eax
lea eax, [edx + 4]
mov edx, ebp
mov dword [esp + 0xc8], eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x8c], 0
mov dword [esp + 0x34], 0
mov eax, dword [esp + 0xc0]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
cmp edx, dword [esp + 0x74]
jb 0x41347d
cmp dword [esp + 8], 0
jle 0x41347d
mov ecx, dword [esp + 0x38]
mov eax, ecx
sub eax, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
jbe 0x4136fa
cmp edx, dword [esp + 0x7c]
ja 0x4138c9
sub edx, dword [esp + 0x94]
mov eax, dword [esp + 0x50]
lea esi, [eax + edx]
mov eax, dword [esp + 0x40]
cmp dword [esi], eax
jne 0x413768
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
lea ebx, [eax + ecx]
mov eax, dword [esp + 0x20]
cmp ebx, eax
mov edi, ebx
cmova edi, eax
mov dword [esp + 0x24], esi
lea ecx, [esi + 4]
mov dword [esp + 0x68], edi
lea ebp, [edi - 3]
mov eax, dword [esp + 0x48]
cmp ebp, eax
jbe 0x41377b
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x413771
bsf eax, eax
shr eax, 3
jmp 0x4137a2
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
lea edx, [ecx + eax]
mov edi, dword [esp + 4]
mov ecx, dword [esp + 0x5c]
movzx ecx, word [ecx + edi - 1]
mov esi, dword [esp + 0x10]
add esi, edx
cmp cx, word [edi + esi - 1]
jne 0x413768
mov ecx, dword [esp + 0x40]
cmp dword [edx], ecx
jne 0x413768
mov ecx, dword [esp + 0x30]
cmp ecx, dword [esp + 0x5c]
je 0x4137df
neg eax
mov ecx, dword [esp + 0x10]
cmp ecx, eax
cmovg eax, ecx
mov esi, eax
neg esi
xor ecx, ecx
lea edi, [esi + ecx]
cmp edi, 3
jle 0x4139ed
mov ebx, dword [edx + ecx - 4]
mov edi, dword [esp + 0x14]
xor ebx, dword [edi + ecx]
jne 0x413a1b
add ecx, 0xfffffffc
jmp 0x413746
mov edx, dword [esp + 0xc]
jmp 0x4138c9
add ecx, 4
mov eax, dword [esp + 0xc4]
mov esi, dword [esp + 0x2c]
add esi, eax
cmp eax, ebp
jae 0x413bc7
mov edi, dword [eax]
xor edi, dword [ecx]
jne 0x41379a
add eax, 4
add ecx, 4
add esi, 4
jmp 0x413781
bsf eax, edi
shr eax, 3
add eax, esi
mov ebp, dword [esp + 0x24]
lea ecx, [eax + 4]
cmp ebx, dword [esp + 0x20]
jae 0x413833
mov esi, dword [esp + 0x30]
add eax, esi
add eax, 4
mov ebx, dword [esp + 0x68]
cmp eax, ebx
jne 0x413833
mov edi, dword [esp + 0x28]
mov esi, edi
mov eax, ebx
cmp dword [esp], ebx
jbe 0x4137f0
mov eax, dword [ebx]
xor eax, dword [edi]
je 0x4137e6
bsf eax, eax
shr eax, 3
jmp 0x413831
xor edi, edi
jmp 0x413a28
lea eax, [ebx + 4]
mov esi, dword [esp + 0xc8]
mov edi, dword [esp + 0xd8]
sub edi, dword [esp + 0xc]
mov ebp, dword [esp + 0xd4]
cmp edi, ebp
cmovae edi, ebp
mov ebp, eax
sub ebp, edi
cmp eax, dword [esp]
jae 0x413be4
mov edi, dword [eax]
xor edi, dword [esi]
jne 0x413825
add eax, 4
add esi, 4
add ebp, 4
jmp 0x41380b
bsf eax, edi
shr eax, 3
add eax, ebp
mov ebp, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x5c]
je 0x413868
neg edx
mov eax, dword [esp + 0x10]
cmp eax, edx
cmovg edx, eax
mov esi, edx
neg esi
xor eax, eax
lea edi, [esi + eax]
cmp edi, 3
jle 0x41386c
mov edi, dword [ebp + eax - 4]
mov ebx, dword [esp + 0x14]
xor edi, dword [ebx + eax]
jne 0x41389a
add eax, 0xfffffffc
jmp 0x41384e
xor edi, edi
jmp 0x4138a7
cmp edx, eax
mov edi, eax
cmovl edi, edx
mov esi, dword [esp + 0xac]
mov ebx, dword [esp + 0xc]
add esi, ebx
cmp eax, edx
jle 0x4138a7
lea ebp, [eax - 1]
mov ebx, dword [esp + 0x44]
mov bl, byte [ebx + eax]
cmp bl, byte [esi + eax]
mov eax, ebp
je 0x413880
inc ebp
mov edi, ebp
jmp 0x4138a7
bsr edx, edi
xor edx, 0x18
shr edx, 3
sub eax, edx
mov edi, eax
sub ecx, edi
cmp ecx, dword [esp + 4]
mov edx, dword [esp + 0xc]
jle 0x4138c9
mov eax, dword [esp + 0x70]
sub eax, edx
mov dword [esp + 0x4c], eax
add edi, dword [esp + 0x30]
mov dword [esp + 0x3c], edi
mov dword [esp + 4], ecx
dec dword [esp + 8]
movzx eax, dx
mov ecx, dword [esp + 0x1c]
movzx ebp, word [ecx + eax*2 + 0x20000]
cmp dword [esp + 0xc0], 0x81
jl 0x4139e3
cmp bp, 1
jne 0x4139e3
mov eax, dword [esp + 0x34]
test eax, eax
je 0x413920
cmp eax, 2
jne 0x413917
lea esi, [edx - 1]
cmp esi, dword [esp + 0x74]
jb 0x413917
cmp dword [esp + 0x18], 3
jae 0x41395c
push 2
pop eax
mov dword [esp + 0x34], eax
jmp 0x4139e3
xor eax, eax
inc eax
mov dword [esp + 0x34], eax
cmp byte [esp + 0xbc], 0
je 0x4139e3
mov ecx, dword [esp + 0x48]
mov esi, edx
mov edx, dword [esp + 0x20]
push dword [esp + 0x40]
call fcn.004199cd
mov edx, esi
add esp, 4
add eax, 4
mov dword [esp + 0x8c], eax
push 2
pop eax
jmp 0x4138ff
mov eax, esi
sub eax, dword [esp + 0x94]
add eax, dword [esp + 0x50]
mov ecx, esi
mov edi, dword [esp + 0x38]
sub ecx, edi
mov edx, dword [esp + 0x28]
lea ebx, [edx + ecx]
cmovb ebx, eax
mov eax, dword [esp + 0x40]
cmp dword [ebx], eax
jne 0x4139d8
cmp esi, edi
mov ebp, dword [esp + 0x20]
cmovb ebp, dword [esp + 0xb8]
lea ecx, [ebx + 4]
mov edx, ebp
push eax
call fcn.004199cd
pop ecx
lea edx, [eax + 4]
cmp esi, edi
jae 0x413a8e
lea ecx, [ebx + edx]
cmp ecx, ebp
mov edi, edx
jne 0x4139cf
shl eax, 3
mov edx, dword [esp + 0x40]
mov ecx, eax
rol edx, cl
mov eax, edx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
push eax
call fcn.004199cd
pop ecx
add edi, eax
mov edx, dword [esp + 0x50]
jmp 0x413a94
push 2
pop eax
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0xc]
movzx eax, bp
sub edx, eax
jmp 0x41366a
cmp eax, ecx
mov edi, ecx
cmovl edi, eax
mov esi, dword [esp + 0x88]
mov ebx, dword [esp + 0xc]
add esi, ebx
cmp ecx, eax
jle 0x413a28
lea ebp, [ecx - 1]
mov ebx, dword [esp + 0x44]
mov bl, byte [ebx + ecx]
cmp bl, byte [esi + ecx]
mov ecx, ebp
je 0x413a01
inc ebp
mov edi, ebp
jmp 0x413a28
bsr eax, ebx
xor eax, 0x18
shr eax, 3
sub ecx, eax
mov edi, ecx
add edx, 4
mov ecx, dword [esp + 0x48]
cmp dword [esp], ecx
jbe 0x413a4c
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x413a42
bsf ecx, eax
shr ecx, 3
jmp 0x413a74
add edx, 4
mov ecx, dword [esp + 0xc4]
mov eax, dword [esp + 0x2c]
add eax, ecx
cmp ecx, dword [esp]
jae 0x413c01
mov esi, dword [ecx]
xor esi, dword [edx]
jne 0x413a6c
add ecx, 4
add edx, 4
add eax, 4
jmp 0x413a52
bsf ecx, esi
shr ecx, 3
add ecx, eax
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xc]
sub ecx, edi
add ecx, 4
cmp ecx, eax
jg 0x4138b3
jmp 0x4138c9
mov edi, edx
mov edx, dword [esp + 0x28]
mov ecx, ebx
push dword [esp + 0x40]
call fcn.00419a04
pop ecx
mov ebp, eax
mov eax, dword [esp + 0x38]
cmp esi, eax
jae 0x413aae
mov edx, edi
jmp 0x413ae6
sub ebx, ebp
cmp ebx, dword [esp + 0x28]
mov edx, edi
jne 0x413ae6
cmp dword [esp + 0x94], eax
jae 0x413ae6
mov ecx, ebp
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x40]
rol eax, cl
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x50]
push eax
call fcn.00419a04
mov edx, edi
add esp, 4
add ebp, eax
mov eax, esi
sub eax, ebp
mov ecx, dword [esp + 0x74]
cmp eax, ecx
cmovbe eax, ecx
mov ecx, esi
sub ecx, eax
add ecx, edx
mov ebx, edx
mov edx, dword [esp + 0x8c]
cmp ebx, edx
ja 0x413b2c
cmp ecx, edx
jb 0x413b2c
sub esi, edx
mov edx, edi
add edx, esi
mov eax, edx
not eax
mov ecx, dword [esp + 0x38]
add eax, ecx
cmp eax, 3
cmovb edx, ecx
push 2
pop eax
mov dword [esp + 0x34], eax
jmp 0x41366a
mov edx, eax
not edx
mov edi, dword [esp + 0x38]
add edx, edi
push 2
pop esi
mov dword [esp + 0x34], esi
cmp edx, 3
mov edx, edi
jb 0x41366a
push 2
pop edx
mov dword [esp + 0x34], edx
mov esi, eax
mov edx, dword [esp + 0x30]
cmp edx, dword [esp + 0x5c]
mov edx, eax
jne 0x41366a
mov edx, dword [esp + 0x8c]
cmp ecx, edx
cmovae ecx, edx
mov edi, dword [esp + 4]
cmp edi, ecx
jae 0x413b8c
mov edx, dword [esp + 0x70]
sub edx, eax
mov esi, dword [esp + 0x5c]
cmp edx, 0xffff
jbe 0x413b96
jmp 0x41347d
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x4c]
mov ecx, edi
movzx edi, ax
mov ebx, dword [esp + 0x1c]
movzx edi, word [ebx + edi*2 + 0x20000]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x4c], edx
push 2
pop edx
mov dword [esp + 0x34], edx
mov dword [esp + 4], ecx
sub eax, edi
mov edx, eax
jae 0x41366a
jmp 0x41347d
mov esi, dword [esp + 0x68]
dec esi
cmp eax, esi
jae 0x413c3a
movzx esi, word [ecx]
cmp si, word [eax]
mov ebp, dword [esp + 0x24]
jne 0x413c3e
add eax, 2
add ecx, 2
jmp 0x413c3e
cmp eax, dword [esp + 0xb0]
jae 0x413c69
movzx edi, word [esi]
cmp di, word [eax]
mov ebp, dword [esp + 0x24]
jne 0x413c6d
add eax, 2
add esi, 2
jmp 0x413c6d
cmp ecx, dword [esp + 0xb0]
jae 0x413c18
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x413c18
add ecx, 2
add edx, 2
cmp ecx, dword [esp + 0x20]
jae 0x413c29
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xc]
sub ecx, dword [esp + 0x48]
jmp 0x413a7c
mov ebp, dword [esp + 0x24]
cmp eax, dword [esp + 0x68]
jae 0x413c60
mov cl, byte [ecx]
mov byte [esp + 0xa8], cl
mov cl, byte [esp + 0xa8]
cmp cl, byte [eax]
mov ecx, 0
sete cl
add eax, ecx
sub eax, dword [esp + 0x48]
jmp 0x4137a6
mov ebp, dword [esp + 0x24]
cmp eax, dword [esp + 0x20]
jae 0x413c89
mov bl, byte [esi]
mov byte [esp + 0x24], bl
mov bl, byte [esp + 0x24]
cmp bl, byte [eax]
mov ebx, 0
sete bl
add eax, ebx
sub eax, dword [esp + 0x68]
jmp 0x413831
mov eax, esi
mov esi, dword [esp + 0x5c]
cmp esi, eax
jae 0x413ce2
mov eax, esi
mov edi, dword [esp + 0x54]
sub eax, edi
cmp eax, 0x11
jg 0x413ce8
mov edx, dword [esp + 0x78]
lea ecx, [esi + edx]
add ecx, 0xfffffffc
cmp dword [esp + 0x98], ecx
lea eax, [edx + eax - 4]
mov ecx, dword [esp + 0xd0]
cmova ecx, eax
mov eax, edi
sub eax, esi
mov edi, ecx
add eax, ecx
test eax, eax
jle 0x413cea
add esi, eax
mov dword [esp + 0x5c], esi
sub edx, eax
mov dword [esp + 0x78], edx
jmp 0x413cea
mov edi, dword [esp + 0x60]
jmp 0x413cea
mov edi, eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x54]
sub ecx, eax
mov eax, ecx
xor edx, edx
mov esi, 0xff
div esi
cmp dword [esp + 0x114], 0
mov esi, dword [esp + 0x90]
je 0x413d27
add eax, esi
add eax, ecx
add eax, 9
cmp eax, dword [esp + 0x84]
ja 0x414482
cmp ecx, 0xf
jb 0x413d4a
lea edx, [ecx - 0xf]
mov byte [esi], 0xf0
lea eax, [esi + 2]
cmp edx, 0xff
jb 0x413d56
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x413d35
lea eax, [esi + 1]
mov edx, ecx
shl dl, 4
mov byte [esi], dl
jmp 0x413d59
mov byte [eax - 1], dl
add ecx, eax
mov edx, dword [esp + 0x80]
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ecx
jb 0x413d62
lea ebx, [edi - 4]
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x9c]
mov word [ecx], dx
cmp dword [esp + 0x114], 0
je 0x413da8
add eax, ecx
add eax, 8
cmp eax, dword [esp + 0x84]
ja 0x41449b
add ecx, 2
mov edx, dword [esp + 0x90]
mov al, byte [edx]
cmp ebx, 0xf
mov esi, dword [esp + 0x54]
jb 0x413dd9
add al, 0xf
mov byte [edx], al
lea eax, [edi - 0x13]
cmp eax, 0x1fe
jb 0x413ddf
or word [ecx], 0xffff
add ecx, 2
add eax, 0xfffffe02
jmp 0x413dc4
add al, bl
mov byte [edx], al
jmp 0x413df2
cmp eax, 0xff
jb 0x413def
add eax, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], al
inc ecx
add esi, edi
mov dword [esp + 0x80], esi
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x54], eax
mov edx, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0xa8], ecx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x78]
jmp 0x4133c1
mov eax, dword [esp + 0x5c]
sub eax, esi
jae 0x413e5c
mov edx, dword [esp + 0x78]
add edx, eax
mov dword [esp + 0x5c], esi
mov dword [esp + 0x78], edx
cmp edx, 3
mov edx, dword [esp + 0x80]
jg 0x413e63
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x78], eax
jmp 0x413e63
mov edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x54]
sub ecx, edx
mov eax, ecx
xor edx, edx
mov esi, 0xff
div esi
cmp dword [esp + 0x114], 0
mov esi, dword [esp + 0x90]
je 0x413e99
add eax, esi
add eax, ecx
add eax, 9
cmp eax, dword [esp + 0x84]
ja 0x41443d
cmp ecx, 0xf
jb 0x413ebc
lea edx, [ecx - 0xf]
mov byte [esi], 0xf0
lea eax, [esi + 2]
cmp edx, 0xff
jb 0x413ec8
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x413ea7
lea eax, [esi + 1]
mov edx, ecx
shl dl, 4
mov byte [esi], dl
jmp 0x413ecb
mov byte [eax - 1], dl
add ecx, eax
mov edx, dword [esp + 0x80]
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ecx
jb 0x413ed4
mov eax, dword [esp + 0x60]
lea ebx, [eax - 4]
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x9c]
mov word [ecx], dx
cmp dword [esp + 0x114], 0
je 0x413f1e
add eax, ecx
add eax, 8
cmp eax, dword [esp + 0x84]
ja 0x41444e
add ecx, 2
mov edx, dword [esp + 0x90]
mov al, byte [edx]
cmp ebx, 0xf
jb 0x413f4f
add al, 0xf
mov byte [edx], al
mov eax, dword [esp + 0x60]
add eax, 0xffffffed
cmp eax, 0x1fe
jb 0x413f55
or word [ecx], 0xffff
add ecx, 2
add eax, 0xfffffe02
jmp 0x413f3a
add al, bl
mov byte [edx], al
jmp 0x413f68
cmp eax, 0xff
jb 0x413f65
add eax, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], al
inc ecx
mov dword [esp + 0x90], ecx
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xa8], eax
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x88], ecx
jmp 0x412b2e
mov esi, dword [esp + 0x10]
sub esi, dword [esp + 0xa0]
mov eax, esi
xor edx, edx
mov ecx, 0xff
div ecx
mov edx, esi
mov ecx, dword [esp + 0x114]
test ecx, ecx
mov esi, dword [esp + 0x90]
je 0x413fc8
add eax, esi
add eax, edx
add eax, 9
cmp eax, dword [esp + 0x84]
ja 0x414424
cmp edx, 0xf
jb 0x41407c
lea ecx, [edx - 0xf]
mov byte [esi], 0xf0
lea eax, [esi + 2]
mov esi, dword [esp + 0xa0]
cmp ecx, 0xff
jb 0x41408f
mov byte [eax - 1], 0xff
add ecx, 0xffffff01
inc eax
jmp 0x413fe1
mov ecx, dword [esp + 0x5c]
mov eax, ecx
mov edx, dword [esp + 0x54]
sub eax, edx
cmp ecx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x60]
cmovb ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, edx
sub ecx, dword [esp + 0x80]
mov eax, ecx
xor edx, edx
mov esi, 0xff
div esi
cmp dword [esp + 0x114], 0
mov esi, dword [esp + 0x90]
je 0x414051
add eax, esi
add eax, ecx
add eax, 9
cmp eax, dword [esp + 0x84]
ja 0x41443d
cmp ecx, 0xf
jb 0x41415d
lea edx, [ecx - 0xf]
mov byte [esi], 0xf0
lea eax, [esi + 2]
cmp edx, 0xff
jb 0x414169
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x414063
lea eax, [esi + 1]
mov ecx, edx
shl cl, 4
mov byte [esi], cl
mov esi, dword [esp + 0xa0]
jmp 0x414092
mov byte [eax - 1], cl
add edx, eax
xor ecx, ecx
mov edi, edx
movsd xmm0, qword [esi + ecx]
lea edx, [eax + ecx]
add edx, 8
movsd qword [edx - 8], xmm0
add ecx, 8
cmp edx, edi
jb 0x414098
mov eax, dword [esp + 0x60]
lea ecx, [eax - 4]
mov eax, ecx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x9c]
mov word [edi], dx
cmp dword [esp + 0x114], 0
je 0x4140e7
add eax, edi
add eax, 8
cmp eax, dword [esp + 0x84]
ja 0x414434
add edi, 2
mov dword [esp + 0x2c], edi
mov edx, dword [esp + 0x90]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x41412f
add al, 0xf
mov byte [edx], al
mov eax, dword [esp + 0x60]
add eax, 0xffffffed
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x58]
cmp eax, 0x1fe
jb 0x414140
mov esi, dword [esp + 0x2c]
or word [esi], 0xffff
add esi, 2
mov dword [esp + 0x2c], esi
add eax, 0xfffffe02
jmp 0x414112
add al, cl
mov byte [edx], al
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x5c], eax
jmp 0x414338
cmp eax, 0xff
jb 0x4141fb
add eax, 0xffffff01
mov esi, dword [esp + 0x2c]
mov byte [esi], 0xff
inc esi
jmp 0x4141ff
lea eax, [esi + 1]
mov edx, ecx
shl dl, 4
mov byte [esi], dl
jmp 0x41416c
mov byte [eax - 1], dl
add ecx, eax
xor edx, edx
mov edi, dword [esp + 0x80]
movsd xmm0, qword [edi + edx]
lea esi, [eax + edx]
add esi, 8
movsd qword [esi - 8], xmm0
add edx, 8
cmp esi, ecx
jb 0x414177
mov eax, dword [esp + 0x60]
lea ebx, [eax - 4]
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x9c]
mov word [ecx], dx
cmp dword [esp + 0x114], 0
je 0x4141c6
add eax, ecx
add eax, 8
cmp eax, dword [esp + 0x84]
ja 0x41444e
add ecx, 2
mov edx, dword [esp + 0x90]
mov al, byte [edx]
cmp ebx, 0xf
mov esi, dword [esp + 0x54]
jb 0x414213
add al, 0xf
mov byte [edx], al
mov eax, dword [esp + 0x60]
add eax, 0xffffffed
cmp eax, 0x1fe
jb 0x414219
or word [ecx], 0xffff
add ecx, 2
add eax, 0xfffffe02
jmp 0x4141e6
mov esi, dword [esp + 0x2c]
mov byte [esi], al
inc esi
mov dword [esp + 0x2c], esi
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x5c], eax
jmp 0x4124d6
add al, bl
mov byte [edx], al
jmp 0x41422c
cmp eax, 0xff
jb 0x414229
add eax, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], al
inc ecx
add esi, dword [esp + 0x60]
mov ebx, dword [esp + 0x5c]
mov edi, esi
sub ebx, esi
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
mov edx, ebx
cmp dword [esp + 0x114], 0
je 0x414263
add eax, ecx
add eax, edx
add eax, 9
cmp eax, dword [esp + 0x84]
ja 0x41445f
cmp edx, 0xf
jb 0x41428a
mov ebx, edx
add edx, 0xfffffff1
mov byte [ecx], 0xf0
lea eax, [ecx + 2]
mov esi, edi
cmp edx, 0xff
jb 0x414298
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x414275
lea eax, [ecx + 1]
mov ebx, edx
shl dl, 4
mov byte [ecx], dl
mov esi, edi
jmp 0x41429b
mov byte [eax - 1], dl
add ebx, eax
mov edx, esi
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ebx
jb 0x41429f
mov eax, dword [esp + 0x78]
add eax, 0xfffffffc
mov ebp, eax
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x64]
mov word [ebx], dx
cmp dword [esp + 0x114], 0
je 0x4142e6
add eax, ebx
add eax, 8
cmp eax, dword [esp + 0x84]
ja 0x41445f
add ebx, 2
mov dword [esp + 0x2c], ebx
mov al, byte [ecx]
cmp ebp, 0xf
jb 0x414327
add al, 0xf
mov byte [ecx], al
mov eax, dword [esp + 0x78]
add eax, 0xffffffed
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x58]
cmp eax, 0x1fe
jb 0x414348
mov esi, dword [esp + 0x2c]
or word [esi], 0xffff
add esi, 2
mov dword [esp + 0x2c], esi
add eax, 0xfffffe02
jmp 0x41430a
mov edx, ebp
add al, dl
mov byte [ecx], al
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xa8], eax
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x58]
jmp 0x4124d6
cmp eax, 0xff
jb 0x41435e
add eax, 0xffffff01
mov esi, dword [esp + 0x2c]
mov byte [esi], 0xff
inc esi
jmp 0x414362
mov esi, dword [esp + 0x2c]
mov byte [esi], al
inc esi
mov dword [esp + 0x2c], esi
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xa8], eax
jmp 0x4124d6
mov dword [esp], ecx
jmp 0x414382
add dword [esp + 0x34], edi
xor edi, edi
cmp dword [esp + 0x114], 2
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x84]
jne 0x4146e5
mov ebx, eax
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x88]
lea eax, [ecx + 0xf0]
mov edi, 0xff
xor edx, edx
div edi
add eax, ecx
lea edi, [ebx - 3]
mov edx, dword [esp + 0x64]
add edx, eax
inc edx
cmp edx, edi
ja 0x4145fd
sub edi, edx
imul eax, edi, 0xff
add eax, 0x12
mov esi, dword [esp]
cmp esi, eax
cmovb eax, esi
add edx, 2
not edx
add edx, ebx
add edx, eax
add edx, 5
cmp edx, 0xc
jl 0x4145fd
cmp ecx, 0xf
jb 0x41456c
lea ebx, [ecx - 0xf]
mov edx, dword [esp + 0x64]
mov byte [edx], 0xf0
add edx, 2
cmp ebx, 0xff
jb 0x41457c
mov byte [edx - 1], 0xff
add ebx, 0xffffff01
inc edx
jmp 0x41440b
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x2c], esi
jmp 0x4144c0
mov edx, dword [esp + 0xa0]
jmp 0x4144ae
mov eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x80]
jmp 0x414495
mov eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x80]
jmp 0x4144ae
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x10], eax
mov edx, edi
mov eax, dword [esp + 0x64]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x60], eax
mov dword [esp + 0x2c], ecx
jmp 0x4144b9
mov eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x80]
mov dword [esp + 0x60], edi
mov dword [esp + 0x2c], esi
jmp 0x4144b9
mov eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x80]
mov dword [esp + 0x60], edi
mov eax, dword [esp + 0x90]
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x114]
xor edi, edi
cmp ecx, 2
mov eax, dword [esp + 0x84]
jne 0x414859
mov edi, eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x58], edx
sub ecx, edx
lea eax, [ecx + 0xf0]
mov esi, 0xff
xor edx, edx
div esi
add eax, ecx
lea esi, [edi - 3]
mov edx, dword [esp + 0x2c]
add edx, eax
inc edx
cmp edx, esi
ja 0x414551
sub esi, edx
imul eax, esi, 0xff
add eax, 0x12
mov esi, dword [esp + 0x60]
cmp esi, eax
cmovb eax, esi
add edx, 2
not edx
add edx, edi
add edx, eax
add edx, 5
cmp edx, 0xc
jl 0x414551
cmp ecx, 0xf
jb 0x4146f1
lea ebx, [ecx - 0xf]
mov edx, dword [esp + 0x2c]
mov byte [edx], 0xf0
add edx, 2
cmp ebx, 0xff
jb 0x414701
mov byte [edx - 1], 0xff
add ebx, 0xffffff01
inc edx
jmp 0x414538
mov ecx, dword [esp + 0xa4]
mov ebx, dword [esp + 0x114]
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0x58]
jmp 0x41478d
mov esi, dword [esp + 0x64]
lea edx, [esi + 1]
mov ebx, ecx
shl bl, 4
mov byte [esi], bl
jmp 0x41457f
mov byte [edx - 1], bl
add ecx, edx
mov esi, dword [esp + 0x88]
movsd xmm0, qword [esi]
movsd qword [edx], xmm0
add edx, 8
add esi, 8
cmp edx, ecx
jb 0x414588
mov edx, dword [esp + 0x48]
mov word [ecx], dx
add ecx, 2
lea ebx, [eax - 4]
mov esi, dword [esp + 0x64]
mov dl, byte [esi]
cmp ebx, 0xf
jb 0x4145d1
add dl, 0xf
mov byte [esi], dl
lea edx, [eax - 0x13]
cmp edx, 0x1fe
jb 0x4145d7
or word [ecx], 0xffff
add ecx, 2
add edx, 0xfffffe02
jmp 0x4145ba
add dl, bl
mov byte [esi], dl
jmp 0x4145ec
cmp edx, 0xff
jb 0x4145e9
add edx, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], dl
inc ecx
mov edx, dword [esp + 0x34]
add edx, eax
mov dword [esp + 0x88], edx
mov dword [esp + 0x64], ecx
xor ecx, ecx
mov edi, dword [esp + 0x114]
cmp edi, 2
sete byte [esp]
mov ebx, dword [esp + 0xa8]
sub ebx, dword [esp + 0x88]
lea eax, [ebx + 0xf0]
mov esi, 0xff
xor edx, edx
div esi
test edi, edi
je 0x414677
add eax, ebx
mov dl, byte [esp]
mov cl, dl
lea ecx, [ecx + ecx*4]
mov edx, dword [esp + 0x84]
add edx, ecx
mov ecx, edx
mov edx, dword [esp + 0x64]
add eax, edx
inc eax
cmp eax, ecx
jbe 0x414677
xor edi, edi
cmp dword [esp + 0x114], 1
mov ebx, dword [esp + 0x54]
je 0x4146e5
mov eax, dword [esp + 0x64]
not eax
lea ebx, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub ebx, eax
mov eax, dword [esp + 0x88]
lea esi, [eax + ebx]
cmp ebx, 0xf
jb 0x4146a2
lea eax, [ebx - 0xf]
mov ecx, dword [esp + 0x64]
mov byte [ecx], 0xf0
inc ecx
cmp eax, 0xff
jb 0x4146af
mov byte [ecx], 0xff
add eax, 0xffffff01
jmp 0x414690
mov eax, ebx
shl al, 4
mov ecx, dword [esp + 0x64]
mov byte [ecx], al
jmp 0x4146b1
mov byte [ecx], al
lea eax, [ecx + 1]
push ebx
push dword [esp + 0x8c]
push eax
mov edi, ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
inc edi
sub esi, dword [esp + 0xa4]
mov eax, dword [esp + 0x108]
mov dword [eax], esi
sub edi, dword [esp + 0x104]
mov ebx, dword [esp + 0x54]
push ebx
call sub.msvcrt.dll_free
pop eax
jmp 0x414855
mov esi, dword [esp + 0x2c]
lea edx, [esi + 1]
mov ebx, ecx
shl bl, 4
mov byte [esi], bl
jmp 0x414704
mov byte [edx - 1], bl
add ecx, edx
mov esi, dword [esp + 0x58]
movsd xmm0, qword [esi]
movsd qword [edx], xmm0
add edx, 8
add esi, 8
cmp edx, ecx
jb 0x41470a
mov edx, dword [esp + 0x9c]
mov word [ecx], dx
add ecx, 2
lea ebx, [eax - 4]
mov esi, dword [esp + 0x2c]
mov dl, byte [esi]
cmp ebx, 0xf
jb 0x414756
add dl, 0xf
mov byte [esi], dl
lea edx, [eax - 0x13]
cmp edx, 0x1fe
jb 0x41475c
or word [ecx], 0xffff
add ecx, 2
add edx, 0xfffffe02
jmp 0x41473f
add dl, bl
mov byte [esi], dl
jmp 0x414771
cmp edx, 0xff
jb 0x41476e
add edx, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], dl
inc ecx
mov edx, dword [esp + 0x10]
add edx, eax
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xa4]
mov ebx, dword [esp + 0x114]
mov edi, dword [esp + 0x6c]
add edi, ecx
xor ecx, ecx
cmp ebx, 2
sete byte [esp]
mov esi, edx
sub edi, edx
lea eax, [edi + 0xf0]
mov ebp, 0xff
xor edx, edx
div ebp
test ebx, ebx
je 0x4147f4
add eax, edi
mov dl, byte [esp]
mov cl, dl
lea ecx, [ecx + ecx*4]
mov edx, dword [esp + 0x84]
add edx, ecx
mov ecx, edx
mov edx, dword [esp + 0x2c]
add eax, edx
inc eax
cmp eax, ecx
mov edx, esi
jbe 0x4147f6
xor edi, edi
cmp dword [esp + 0x114], 1
je 0x414859
mov eax, dword [esp + 0x2c]
not eax
lea edi, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub edi, eax
jmp 0x4147f6
mov edx, esi
lea esi, [edx + edi]
cmp edi, 0xf
mov ecx, edi
jb 0x41481c
lea eax, [ecx - 0xf]
mov ebx, dword [esp + 0x2c]
mov byte [ebx], 0xf0
inc ebx
cmp eax, 0xff
jb 0x414829
mov byte [ebx], 0xff
add eax, 0xffffff01
jmp 0x41480a
mov eax, ecx
shl al, 4
mov ebx, dword [esp + 0x2c]
mov byte [ebx], al
jmp 0x41482b
mov byte [ebx], al
lea eax, [ebx + 1]
push ecx
push edx
push eax
mov edi, ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
inc edi
sub esi, dword [esp + 0xa4]
mov eax, dword [esp + 0x108]
mov dword [eax], esi
sub edi, dword [esp + 0x104]
test edi, edi
jg 0x414864
mov eax, dword [esp + 0x1c]
mov byte [eax + 0x4001b], 1
mov eax, edi
add esp, 0xf0
pop esi
pop edi
pop ebx
pop ebp
ret
push ebp
push ebx
push edi
push esi
sub esp, 0x100
mov ebx, dword [esp + 0x124]
mov eax, dword [esp + 0x120]
mov dword [esp], eax
mov esi, dword [ecx + 0x40000]
mov dword [esp + 0xc], esi
sub esi, dword [ecx + 0x40004]
mov ebp, dword [ecx + 0x4000c]
mov dword [esp + 0x18], ecx
sub ebp, dword [ecx + 0x40010]
add ebp, esi
mov eax, dword [esp + 0x11c]
mov esi, dword [esp + 0x118]
mov edi, dword [esp + 0x114]
cmp ebp, 0x10000
jb 0x4148ee
mov ecx, dword [esp + 0x18]
and dword [ecx + 0x4001c], 0
push ebx
push dword [esp + 4]
push eax
push esi
push edi
call 0x4103a7
add esp, 0x114
jmp 0x419928
mov dword [esp + 0x60], ebx
mov dword [esp + 0xe0], edi
mov dword [esp + 0x90], edx
test ebp, ebp
jne 0x414951
cmp dword [esi], 0x1001
jl 0x414951
push 0x40020
mov edi, dword [esp + 0x1c]
push dword [edi + 0x4001c]
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, edi
mov esi, dword [esp + 0x90]
mov edx, esi
call fcn.00419a45
mov eax, dword [esp]
mov word [edi + 0x40018], ax
mov ecx, edi
mov edx, esi
add esp, 0x100
pop esi
pop edi
pop ebx
pop ebp
jmp 0x4103a7
xor edi, edi
mov ebp, eax
test eax, eax
jg 0x414964
cmp dword [esp + 0x60], 2
je 0x419920
mov ebx, dword [esi]
cmp ebx, 0x7e000000
ja 0x419920
mov dword [esp + 0xf0], esi
mov esi, dword [esp + 0xc]
add esi, ebx
mov eax, dword [esp]
cmp eax, 0xc
push 0xc
pop ecx
cmovl ecx, eax
test eax, eax
push 9
pop edx
cmovg edx, ecx
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x40000], esi
mov dword [esp + 0x9c], edx
imul eax, edx, 0xc
cmp dword [eax + 0x4214fc], 0
mov ecx, dword [eax + 0x421500]
mov dword [esp + 0xd0], ecx
mov ecx, dword [esp + 0x90]
lea edx, [ecx + ebx - 0xc]
mov dword [esp + 0xe8], edx
je 0x416e2c
mov dword [esp + 0xc0], ebx
lea eax, [eax + 0x4214fc]
mov ecx, dword [esp + 0x18]
mov cl, byte [ecx + 0x4001a]
xor edi, edi
mov byte [esp + 0x4c], cl
neg cl
mov ecx, 0
sbb ecx, ecx
mov dword [esp + 0xec], ecx
mov esi, dword [eax + 8]
push 0x10030
call sub.msvcrt.dll_malloc
mov ecx, dword [esp + 0x94]
add esp, 4
mov ebx, eax
test eax, eax
je 0x41990a
xor eax, eax
mov edi, esi
mov esi, dword [esp + 0x60]
cmp esi, 2
setne al
mov edx, dword [esp + 0xf0]
and dword [edx], 0
add ebp, dword [esp + 0xe0]
mov edx, 0xfff
cmp edi, edx
cmovb edx, edi
mov dword [esp + 0xe4], edx
mov edi, dword [esp + 0xc0]
lea edx, [ecx + edi]
mov dword [esp + 0xac], edx
lea eax, [eax + eax*4]
lea eax, [eax + ebp - 5]
mov dword [esp + 0xa8], eax
mov eax, esi
lea edx, [ecx + edi - 5]
lea esi, [edi + ecx - 5]
mov dword [esp + 0x5c], esi
movsd xmm1, qword [0x421360]
lea esi, [edx - 3]
mov dword [esp + 0x88], esi
mov dword [esp + 0x30], edx
lea edx, [edx - 1]
mov dword [esp + 0xdc], edx
lea edx, [ebx + 0x4c]
mov dword [esp + 0xf8], edx
lea edx, [ebx + 0x1c]
mov dword [esp + 0xf4], edx
lea edx, [ebx + 0x10]
mov dword [esp + 0xb4], edx
lea edx, [ebx + 0x40]
mov dword [esp + 0xfc], edx
mov esi, ebx
mov dword [esp + 0x70], ebx
lea edx, [ebx + 8]
mov dword [esp + 0xd4], edx
mov ebx, ecx
mov edx, dword [esp + 0xe0]
mov dword [esp + 0x80], edx
mov edx, ecx
push 0xfffffffffffffffc
pop ecx
sub ecx, ebx
mov dword [esp + 0x68], ecx
mov ecx, ebx
sub ecx, edx
mov dword [esp + 0x6c], ecx
mov ecx, ebx
mov dword [esp + 0x94], edx
sub cl, dl
add cl, 0xf1
mov byte [esp + 0xb0], cl
mov dword [esp + 4], ebx
mov ecx, ebx
cmp ecx, dword [esp + 0xe8]
ja 0x41981d
mov ebp, dword [esp + 0x18]
mov eax, dword [ebp + 0x4001c]
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0x40004]
mov edx, dword [ebp + 0x40008]
mov dword [esp + 0x40], edx
mov edx, dword [ebp + 0x4000c]
mov esi, ecx
sub esi, eax
add esi, edx
mov dword [esp + 0xc], esi
mov esi, dword [ebp + 0x40010]
mov dword [esp + 0x28], esi
mov dword [esp + 0x14], eax
mov edi, eax
mov dword [esp + 0x2c], edx
sub edi, edx
mov dword [esp + 0x48], ecx
mov eax, dword [ecx]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x40014]
cmp eax, dword [esp + 0xc]
jae 0x414bb1
imul ecx, dword [edi + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
mov esi, dword [esp + 0x18]
sub edx, dword [esi + ecx*4]
mov esi, 0xffff
cmp edx, esi
jb 0x414b9c
mov edx, 0xffff
and esi, eax
mov ebp, dword [esp + 0x18]
mov word [ebp + esi*2 + 0x20000], dx
mov dword [ebp + ecx*4], eax
inc eax
jmp 0x414b75
mov dword [esp + 0x44], edi
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 0x10000]
mov edx, dword [esp + 0xc]
lea esi, [edx - 0xffff]
mov dword [esp + 0x58], eax
cmp eax, edx
cmova esi, ecx
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x2c]
add eax, edi
mov esi, dword [esp + 0x18]
mov dword [esi + 0x40014], edx
mov esi, dword [esp + 0x48]
imul ebp, dword [esi], 0x9e3779b1
sub eax, ecx
mov dword [esp + 0xc8], eax
shr ebp, 0x11
mov edx, dword [esp + 0x24]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
mov ebx, edx
shr ebx, 0x18
xor ebx, eax
mov eax, esi
mov dword [esp + 0x7c], ebp
mov edx, dword [esp + 0x18]
mov edx, dword [edx + ebp*4]
or ebx, ecx
lea ecx, [esi + 4]
mov dword [esp + 0x38], ecx
lea ecx, [esi + 8]
mov dword [esp + 0x20], ecx
sete byte [esp + 0x84]
lea ecx, [edi - 4]
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x14]
add ecx, 4
mov dword [esp + 0xbc], ecx
mov ecx, dword [esp + 4]
add ecx, edi
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x34], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0x64], 0
xor esi, esi
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x1c], ecx
push 3
pop ebx
cmp edx, dword [esp + 0x10]
jb 0x4152cc
cmp dword [esp + 0x1c], 0
mov ebp, ebx
jle 0x4152ce
mov ecx, edx
mov ebx, dword [esp + 0xc]
sub ebx, edx
xor edi, edi
cmp byte [esp + 0x4c], 0
mov dword [esp], edx
je 0x414cc1
cmp ebx, 8
jb 0x414ec8
mov edi, dword [esp + 0x2c]
mov edx, edi
sub edx, ecx
jbe 0x414d2d
cmp ecx, dword [esp + 0xa4]
ja 0x414d7d
mov edi, ecx
sub edi, dword [esp + 0x28]
add edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x24]
cmp dword [edi], ecx
jne 0x414d7a
add edx, eax
mov eax, dword [esp + 0x30]
cmp edx, eax
mov dword [esp + 8], edx
mov ecx, edx
cmova ecx, eax
add edi, 4
mov dword [esp + 0x50], ecx
lea eax, [ecx - 3]
mov edx, dword [esp + 0x38]
cmp eax, edx
mov ecx, dword [esp]
mov dword [esp + 0x3c], ebx
jbe 0x414d93
mov edx, dword [edx]
xor edx, dword [edi]
je 0x414d8c
bsf edx, edx
shr edx, 3
mov ebx, dword [esp + 4]
jmp 0x414dc2
sub ecx, edi
add ecx, dword [esp + 0x14]
movzx eax, word [eax + ebp - 1]
cmp ax, word [ebp + ecx - 1]
jne 0x414d7a
mov eax, dword [esp + 0x24]
cmp dword [ecx], eax
mov edi, 0
jne 0x414d84
add ecx, 4
mov eax, dword [esp + 0x88]
mov edi, dword [esp + 0x38]
cmp eax, edi
jbe 0x4152c3
mov eax, dword [edi]
xor eax, dword [ecx]
je 0x414e17
bsf edi, eax
shr edi, 3
mov ecx, dword [esp]
jmp 0x414ea4
mov ecx, dword [esp]
xor edi, edi
jmp 0x414ec8
mov ecx, dword [esp]
jmp 0x414ec8
add edi, 4
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x68]
lea ebx, [ecx + edx]
cmp edx, eax
jae 0x415194
mov ecx, dword [edx]
xor ecx, dword [edi]
jne 0x414db3
add edx, 4
add edi, 4
add ebx, 4
jmp 0x414d9a
bsf edx, ecx
shr edx, 3
add edx, ebx
mov ebx, dword [esp + 4]
mov ecx, dword [esp]
lea edi, [edx + 4]
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x30]
jae 0x414e0a
mov eax, dword [esp + 0x48]
add eax, edx
add eax, 4
mov edx, dword [esp + 0x50]
cmp eax, edx
jne 0x414e0a
mov eax, edx
mov edx, dword [esp + 0x14]
mov ecx, eax
cmp dword [esp + 0x88], eax
jbe 0x414e56
mov ecx, dword [eax]
mov edx, dword [esp + 0x14]
xor ecx, dword [edx]
je 0x414e4c
mov dword [esp + 4], ebx
bsf ecx, ecx
shr ecx, 3
jmp 0x414eb5
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x3c]
jmp 0x414ebe
mov dword [esp + 0x3c], ebx
add ecx, 4
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x68]
add edx, edi
cmp edi, eax
jae 0x41521f
mov ebx, edi
mov edi, dword [edi]
xor edi, dword [ecx]
jne 0x414e95
add ebx, 4
add ecx, 4
add edx, 4
mov edi, ebx
jmp 0x414e2f
lea ecx, [eax + 4]
mov edx, dword [esp + 0xbc]
mov dword [esp + 8], edi
mov eax, dword [esp + 0x8c]
sub eax, dword [esp]
mov edi, dword [esp + 0x5c]
cmp eax, edi
cmovae eax, edi
mov edi, ecx
sub edi, eax
mov eax, dword [esp + 0x88]
cmp ecx, eax
jae 0x41523c
mov ebx, dword [ecx]
xor ebx, dword [edx]
jne 0x414ea9
add ecx, 4
add edx, 4
add edi, 4
mov ebx, dword [esp + 4]
jmp 0x414e78
bsf edi, edi
shr edi, 3
add edi, edx
mov ecx, dword [esp]
mov ebx, dword [esp + 0x3c]
add edi, 4
jmp 0x414ebe
bsf ecx, ebx
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x3c]
add edi, ecx
mov ecx, dword [esp]
cmp edi, ebp
jle 0x414ec8
mov dword [esp + 0x34], ebx
mov ebp, edi
dec dword [esp + 0x1c]
cmp edi, ebp
jne 0x414f58
lea eax, [ecx + ebp]
cmp eax, dword [esp + 0xc]
ja 0x414f58
mov dword [esp + 0x3c], ebp
mov dword [esp + 8], edi
lea edx, [edi - 3]
xor edi, edi
push 0x10
pop ebp
xor ecx, ecx
inc ecx
cmp edi, edx
jge 0x414f22
mov eax, dword [esp]
add eax, edi
movzx eax, ax
mov ebx, dword [esp + 0x18]
movzx eax, word [ebx + eax*2 + 0x20000]
lea ebx, [ebp + 1]
sar ebp, 4
cmp ecx, eax
cmovbe ecx, eax
push 0x10
pop eax
cmovb ebx, eax
cmovb esi, edi
add edi, ebp
mov ebp, ebx
jmp 0x414ef0
cmp ecx, 1
jbe 0x414f51
mov edi, dword [esp]
cmp edi, ecx
mov eax, ecx
mov edx, 0
cmovb eax, edx
mov edx, edi
sub edx, eax
mov ebp, dword [esp + 8]
mov ebx, ebp
cmp edi, ecx
mov eax, dword [esp + 0x48]
jae 0x414c8d
jmp 0x4152ce
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp]
movzx eax, cx
mov ecx, dword [esp + 0x18]
cmp word [ecx + eax*2 + 0x20000], 1
jne 0x41506a
test esi, esi
jne 0x41506a
mov eax, dword [esp + 0x64]
test eax, eax
mov edx, dword [esp]
je 0x414fb6
mov dword [esp + 0x64], eax
cmp eax, 2
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
jne 0x41506d
lea ebx, [edx - 1]
cmp ebx, eax
jb 0x41506d
mov eax, ecx
sub eax, edx
cmp eax, 3
jae 0x414ffa
push 2
pop eax
mov dword [esp + 0x64], eax
jmp 0x41506d
xor eax, eax
inc eax
mov dword [esp + 0x64], eax
cmp byte [esp + 0x84], 0
je 0x41506d
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x30]
push dword [esp + 0x24]
call fcn.004199cd
mov edx, dword [esp + 4]
movsd xmm1, qword [0x421360]
add esp, 4
add eax, 4
mov dword [esp + 0xa0], eax
push 2
pop eax
jmp 0x414f81
mov edi, ecx
mov eax, ebx
sub eax, dword [esp + 0x28]
add eax, dword [esp + 0x40]
mov ecx, ebx
mov edx, edi
sub ecx, edi
mov edi, dword [esp + 0x14]
lea edi, [edi + ecx]
cmovb edi, eax
mov eax, dword [esp + 0x24]
cmp dword [edi], eax
jne 0x415063
mov esi, edx
cmp ebx, edx
mov edx, dword [esp + 0x30]
cmovb edx, dword [esp + 0xc8]
lea ecx, [edi + 4]
mov dword [esp], edx
push eax
call fcn.004199cd
pop ecx
mov ecx, ebx
lea ebx, [eax + 4]
mov dword [esp + 8], ecx
cmp ecx, esi
jae 0x41508c
mov esi, edi
lea ecx, [edi + ebx]
cmp ecx, dword [esp]
mov edx, dword [esp + 0x14]
je 0x4151bc
mov dword [esp], ebx
mov edx, dword [esp + 0x40]
jmp 0x415095
push 2
pop eax
mov dword [esp + 0x64], eax
mov edx, dword [esp]
mov ebx, ebp
lea eax, [esi + edx]
movzx eax, ax
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + eax*2 + 0x20000]
sub edx, eax
mov eax, dword [esp + 0x48]
jmp 0x414c8d
mov esi, edi
mov dword [esp], ebx
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
mov ebx, esi
mov ecx, esi
push edi
call fcn.00419a04
pop ecx
mov esi, eax
mov eax, dword [esp + 0x2c]
cmp dword [esp + 8], eax
jae 0x4150ba
movsd xmm1, qword [0x421360]
jmp 0x4150f9
sub ebx, esi
cmp ebx, dword [esp + 0x14]
movsd xmm1, qword [0x421360]
jne 0x4150f9
cmp dword [esp + 0x28], eax
jae 0x4150f9
mov ecx, esi
neg ecx
shl ecx, 3
mov eax, edi
rol eax, cl
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x40]
push eax
call fcn.00419a04
movsd xmm1, qword [0x421360]
add esp, 4
add esi, eax
mov ebx, ebp
mov edi, dword [esp + 8]
mov ecx, edi
sub ecx, esi
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovbe ecx, eax
sub edi, ecx
mov edx, dword [esp]
add edi, edx
mov eax, dword [esp + 0xa0]
cmp edx, eax
ja 0x41514f
cmp edi, eax
jb 0x41514f
mov ecx, dword [esp + 8]
sub ecx, eax
mov edx, dword [esp]
add edx, ecx
mov eax, edx
not eax
mov ecx, dword [esp + 0x2c]
add eax, ecx
cmp eax, 3
cmovb edx, ecx
xor esi, esi
push 2
pop eax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x48]
jmp 0x414c8d
mov eax, ecx
not eax
mov edx, dword [esp + 0x2c]
add eax, edx
xor esi, esi
mov ebp, edi
push 2
pop edi
mov dword [esp + 0x64], edi
cmp eax, 3
mov eax, dword [esp + 0x48]
jb 0x414c8d
mov eax, dword [esp + 0xa0]
cmp ebp, eax
cmovae ebp, eax
cmp ebx, ebp
jae 0x4151e8
mov edx, dword [esp + 0xc]
sub edx, ecx
cmp edx, 0xffff
jbe 0x4151f0
jmp 0x4152cc
mov eax, dword [esp + 0x50]
dec eax
cmp edx, eax
jae 0x415259
movzx eax, word [edi]
cmp ax, word [edx]
mov ebx, dword [esp + 4]
jne 0x41525d
add edx, 2
add edi, 2
jmp 0x41525d
shl eax, 3
mov edi, dword [esp + 0x24]
mov dword [esp], edi
mov ecx, eax
mov eax, dword [esp]
rol eax, cl
mov ecx, edx
mov edx, dword [esp + 0x30]
push eax
call fcn.004199cd
pop ecx
add ebx, eax
mov dword [esp], ebx
mov edx, dword [esp + 0x40]
jmp 0x415099
mov eax, ebx
mov edx, dword [esp + 0x34]
mov ebp, ebx
movzx eax, cx
mov edi, dword [esp + 0x18]
movzx eax, word [edi + eax*2 + 0x20000]
mov dword [esp + 0x34], edx
push 2
pop edx
mov dword [esp + 0x64], edx
mov ebx, ebp
sub ecx, eax
mov eax, dword [esp + 0x48]
mov edx, ecx
jae 0x414c8d
jmp 0x4152ce
cmp edi, dword [esp + 0xdc]
jae 0x41527a
movzx eax, word [ecx]
cmp ax, word [edi]
mov ebx, dword [esp + 0x3c]
jne 0x41527e
add edi, 2
add ecx, 2
jmp 0x41527e
cmp ecx, dword [esp + 0xdc]
jae 0x41529d
movzx eax, word [edx]
cmp ax, word [ecx]
mov edi, dword [esp + 8]
jne 0x4152a1
add ecx, 2
add edx, 2
jmp 0x4152a1
mov ebx, dword [esp + 4]
cmp edx, dword [esp + 0x50]
jae 0x41526e
mov al, byte [edi]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov ecx, dword [esp]
sub edx, dword [esp + 0x38]
jmp 0x414dc2
mov ebx, dword [esp + 0x3c]
cmp edi, dword [esp + 0x30]
jae 0x41528f
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [edi]
sete cl
add edi, ecx
mov eax, dword [esp + 0x38]
mov ecx, dword [esp]
sub edi, eax
jmp 0x414ea4
mov edi, dword [esp + 8]
mov dword [esp + 4], ebx
cmp ecx, dword [esp + 0x30]
jae 0x4152b6
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov ebx, dword [esp + 0x3c]
sub ecx, dword [esp + 0x50]
jmp 0x414eb9
mov dword [esp + 0x3c], ebx
jmp 0x414e29
mov ebp, ebx
mov dword [esp + 8], ebp
cmp dword [esp + 0x1c], 0
mov esi, dword [esp + 0x54]
jle 0x415438
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xfffe
ja 0x415438
mov edx, dword [esi + 0x40000]
mov ebx, dword [esi + 0x40004]
sub edx, ebx
mov eax, dword [esi + 0x4000c]
add edx, eax
mov edi, dword [esp + 0x7c]
mov edi, dword [esi + edi*4]
add ecx, edi
mov dword [esp + 0x3c], edx
sub ecx, edx
mov edx, edi
sub ebx, eax
mov dword [esp + 0x50], ebx
mov edi, dword [esp + 0xc]
sub edi, ecx
cmp edi, 0xffff
ja 0x415438
sub dword [esp + 0x1c], 1
jb 0x415438
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x24]
cmp dword [ebx + edx], eax
jne 0x4153d6
mov ebp, dword [esp + 0x3c]
sub ebp, edx
add ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x30]
cmp ebp, eax
cmova ebp, eax
mov dword [esp], edx
add edx, ebx
add edx, 4
lea ebx, [ebp - 3]
mov ecx, dword [esp + 0x38]
cmp ebx, ecx
jbe 0x41538c
mov ecx, dword [ecx]
xor ecx, dword [edx]
je 0x415385
bsf ecx, ecx
shr ecx, 3
jmp 0x4153b4
add edx, 4
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x68]
lea esi, [eax + ecx]
cmp ecx, ebx
jae 0x4153ee
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x4153a8
add ecx, 4
add edx, 4
add esi, 4
jmp 0x415393
bsf ecx, eax
shr ecx, 3
add ecx, esi
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x50]
add ecx, 4
mov edx, dword [esp + 8]
cmp ecx, edx
mov eax, dword [esp + 0x34]
cmovg eax, edi
mov dword [esp + 0x34], eax
cmovg edx, ecx
mov dword [esp + 8], edx
mov edx, dword [esp]
movzx eax, dx
movzx eax, word [esi + eax*2 + 0x20000]
sub edx, eax
mov ecx, dword [esp + 0x10]
sub ecx, eax
jmp 0x415323
lea eax, [ebp - 1]
cmp ecx, eax
jae 0x415411
movzx eax, word [edx]
cmp ax, word [ecx]
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x50]
jne 0x41541d
add ecx, 2
add edx, 2
jmp 0x41541d
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x50]
mov dword [esp + 4], eax
cmp ecx, ebp
jae 0x415430
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov eax, dword [esp + 0x38]
sub ecx, eax
jmp 0x4153b8
mov edx, dword [esp + 8]
lea eax, [edx - 0x13]
cmp eax, 0x12
mov ecx, edx
push 0x12
pop eax
cmovb ecx, eax
cmp byte [esp + 0x4c], 0
cmove ecx, edx
cmp edx, 4
jl 0x41545b
test ecx, ecx
jne 0x41547c
mov ecx, dword [esp + 0x48]
inc ecx
dec dword [esp + 0x68]
inc dword [esp + 4]
inc dword [esp + 0x6c]
inc byte [esp + 0xb0]
mov eax, dword [esp + 0x60]
jmp 0x414b14
mov ebx, dword [esp + 0x48]
sub ebx, dword [esp + 0x94]
cmp dword [esp + 0xe4], ecx
jae 0x4154ed
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
cmp dword [esp + 0x60], 0
je 0x4154bb
add eax, dword [esp + 0x80]
add eax, ebx
add eax, 9
cmp eax, dword [esp + 0xa8]
ja 0x4194b2
cmp ebx, 0xf
jb 0x416d40
lea edx, [ebx - 0xf]
mov eax, dword [esp + 0x80]
mov byte [eax], 0xf0
add eax, 2
cmp edx, 0xff
jb 0x416d53
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x4154d4
mov dword [esp + 0x38], ecx
xor esi, esi
xor edi, edi
mov ebp, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
mov dword [esp], ebx
cmp esi, 0x40
je 0x415542
mov eax, ecx
cmp ecx, 0xf
jl 0x41552d
lea eax, [edi + ebx]
mov dword [esp + 0xc], eax
lea eax, [ecx - 0xf]
xor edx, edx
mov ebx, ecx
mov ecx, 0xff
div ecx
mov ecx, ebx
mov ebx, dword [esp]
mov edx, dword [esp + 0xc]
add eax, edx
inc eax
movsd qword [ebp + esi + 4], xmm1
mov dword [ebp + esi + 0xc], ecx
mov dword [ebp + esi], eax
inc edi
add esi, 0x10
inc ecx
jmp 0x415500
lea eax, [ebx - 0xf]
xor edx, edx
mov esi, 0xff
div esi
cmp ebx, 0xf
lea eax, [ebx + eax + 1]
cmovl eax, ebx
lea edx, [eax + 3]
add eax, 4
mov dword [esp + 0xc], eax
mov ebp, dword [esp + 0xf8]
push 0xfffffffffffffff1
pop edi
lea esi, [edi + 0x13]
cmp esi, dword [esp + 0x38]
jg 0x4155a8
mov eax, edx
cmp esi, 0x13
jb 0x415592
mov eax, edi
mov ecx, edx
xor edx, edx
mov ebx, 0xff
div ebx
mov edx, ecx
mov ebx, dword [esp]
add eax, dword [esp + 0xc]
mov dword [ebp - 4], esi
mov ecx, dword [esp + 0x34]
mov dword [ebp - 8], ecx
mov dword [ebp], ebx
mov dword [ebp - 0xc], eax
inc edi
add ebp, 0x10
jmp 0x41556c
mov eax, dword [esp + 0x38]
shl eax, 4
mov ecx, dword [esp + 0x70]
add ecx, eax
add eax, dword [esp + 0xf4]
xor edx, edx
inc edx
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x44]
cmp edx, 4
je 0x4155e0
movsd qword [eax - 8], xmm1
mov dword [eax], edx
mov esi, dword [ecx]
add esi, edx
mov dword [eax - 0xc], esi
inc edx
add eax, 0x10
jmp 0x4155c7
xor ecx, ecx
inc ecx
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x68]
sub eax, ecx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x8c]
add eax, ecx
mov dword [esp + 0xcc], eax
mov edx, ecx
shl edx, 4
mov eax, dword [esp + 0xb4]
add eax, edx
mov dword [esp + 0x6c], eax
add edx, dword [esp + 0xfc]
mov dword [esp + 0x84], edx
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x38]
sub edx, ecx
mov dword [esp + 0xa0], edx
jle 0x416b2a
add eax, ecx
mov dword [esp + 0x3c], eax
cmp eax, dword [esp + 0xe8]
ja 0x416b2a
lea eax, [ecx + 1]
mov dword [esp + 0x7c], eax
shl eax, 4
mov dword [esp + 0xc4], ecx
mov ebx, ecx
shl ebx, 4
mov edx, dword [esp + 0x70]
mov ecx, dword [edx + eax]
mov dword [esp + 0x78], ebx
mov eax, dword [edx + ebx]
cmp dword [esp + 0x9c], 0xc
jne 0x4156e7
cmp ecx, eax
jg 0x415692
add eax, 3
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x78]
cmp dword [edx + ecx + 0x40], eax
jl 0x4168ce
mov eax, dword [esp + 0x3c]
mov ecx, eax
sub ecx, esi
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x40014]
cmp eax, dword [esp + 0x1c]
jae 0x415744
imul ecx, dword [edi + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebp + ecx*4]
mov esi, 0xffff
cmp edx, esi
jb 0x4156d6
mov edx, 0xffff
and esi, eax
mov word [ebp + esi*2 + 0x20000], dx
mov dword [ebp + ecx*4], eax
inc eax
jmp 0x4156ae
cmp ecx, eax
jle 0x4168ce
mov eax, dword [esp + 0x3c]
mov ecx, eax
sub ecx, esi
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x40014]
cmp eax, dword [esp + 0x1c]
jae 0x415e67
imul ecx, dword [edi + eax], 0x9e3779b1
shr ecx, 0x11
mov edx, eax
sub edx, dword [ebp + ecx*4]
mov esi, 0xffff
cmp edx, esi
jb 0x415733
mov edx, 0xffff
and esi, eax
mov word [ebp + esi*2 + 0x20000], dx
mov dword [ebp + ecx*4], eax
inc eax
jmp 0x41570b
mov eax, dword [esp + 0x1c]
lea ebx, [eax - 0xffff]
cmp dword [esp + 0x58], eax
cmova ebx, dword [esp + 0x28]
mov dword [ebp + 0x40014], eax
mov esi, dword [esp + 0x3c]
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov dword [esp + 0x98], eax
mov ebp, dword [ebp + eax*4]
lea eax, [esi + 4]
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x34]
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 + 0xb0], eax
or edx, ecx
mov edx, ebx
mov ebx, ebp
sete byte [esp + 0xd8]
mov dword [esp + 0x24], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0x74], 0
xor esi, esi
mov eax, dword [esp + 0xd0]
mov dword [esp + 8], eax
push 3
pop eax
mov dword [esp + 4], edx
cmp ebx, edx
jb 0x416588
mov ecx, dword [esp + 8]
test ecx, ecx
jle 0x416588
mov ebp, dword [esp + 0x1c]
sub ebp, ebx
mov dword [esp + 0xc], 0
cmp byte [esp + 0x4c], 0
mov dword [esp], ebx
je 0x415813
cmp ebp, 8
jae 0x415813
mov ebp, dword [esp + 0x18]
jmp 0x415a80
mov dword [esp + 0x50], ebp
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
mov ebp, eax
sub ebp, ebx
mov edx, dword [esp + 0x18]
jbe 0x41588b
cmp ebx, dword [esp + 0xa4]
ja 0x4158f6
mov edi, ebx
sub edi, dword [esp + 0x28]
add edi, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
cmp dword [edi], eax
jne 0x4158f2
add ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0xa0], ebp
cmova ebp, eax
add edi, 4
lea eax, [ebp - 3]
mov edx, dword [esp + 0x20]
cmp eax, edx
jbe 0x41591e
mov edx, dword [edx]
xor edx, dword [edi]
je 0x415914
bsf edx, edx
shr edx, 3
mov edi, dword [esp + 0x44]
jmp 0x415951
mov ecx, ebx
sub ecx, eax
add ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x10]
movzx eax, word [eax + ebx - 1]
cmp ax, word [ebx + ecx - 1]
jne 0x4158e7
mov eax, dword [esp + 0x34]
cmp dword [ecx], eax
mov eax, dword [esp + 0x88]
jne 0x415905
add ecx, 4
mov ebx, dword [esp + 0x20]
cmp eax, ebx
mov eax, ebx
mov edx, dword [esp + 4]
jbe 0x415e60
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x4159ae
bsf ebp, eax
shr ebp, 3
mov ecx, dword [esp + 8]
mov ebx, dword [esp]
jmp 0x415a3e
mov eax, ebx
mov ecx, dword [esp + 8]
mov ebx, dword [esp]
jmp 0x4158fa
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
mov ebp, edx
mov edx, dword [esp + 4]
jmp 0x415a80
mov ebp, edx
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp]
jmp 0x4158fc
add edi, 4
mov edx, dword [esp + 0xb0]
mov ecx, dword [esp + 0x64]
lea ebx, [ecx + edx]
cmp edx, eax
jae 0x415d70
mov ecx, dword [edx]
xor ecx, dword [edi]
jne 0x41593e
add edx, 4
add edi, 4
add ebx, 4
jmp 0x415925
bsf edx, ecx
shr edx, 3
add edx, ebx
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 8]
mov ebx, dword [esp]
lea eax, [edx + 4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xa0]
cmp eax, dword [esp + 0x30]
jae 0x41599d
mov eax, dword [esp + 0x3c]
add eax, edx
add eax, 4
cmp eax, ebp
jne 0x41599d
mov eax, dword [esp + 0x14]
mov edx, eax
mov ecx, ebp
cmp dword [esp + 0x88], ebp
jbe 0x4159f1
mov ecx, dword [ebp]
xor ecx, dword [eax]
je 0x4159e7
bsf ecx, ecx
shr ecx, 3
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
jmp 0x415a5e
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0xc]
jmp 0x415a68
add ecx, 4
mov ebp, dword [esp + 0xb0]
mov ebx, dword [esp]
mov eax, dword [esp + 0x64]
lea edx, [eax + ebp]
mov eax, dword [esp + 0x88]
cmp ebp, eax
jae 0x415db7
mov edi, dword [ebp]
xor edi, dword [ecx]
jne 0x415a2a
add ebp, 4
add ecx, 4
add edx, 4
mov edi, dword [esp + 0x44]
jmp 0x4159c9
lea ecx, [ebp + 4]
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xcc]
sub eax, ebx
mov edi, dword [esp + 0x5c]
cmp edi, eax
cmovb eax, edi
mov edi, ecx
sub edi, eax
mov eax, dword [esp + 0x88]
cmp ecx, eax
jae 0x415dd5
mov ebx, dword [ecx]
xor ebx, dword [edx]
jne 0x415a47
add ecx, 4
add edx, 4
add edi, 4
mov ebx, dword [esp]
jmp 0x415a0e
bsf ebp, edi
shr ebp, 3
add ebp, edx
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 8]
add ebp, 4
mov eax, dword [esp + 0x10]
jmp 0x415a68
bsf ecx, ebx
shr ecx, 3
add ecx, edi
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp]
mov ebp, dword [esp + 0xc]
add ebp, ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0xc], ebp
cmp ebp, eax
mov ebp, dword [esp + 0x18]
jle 0x415a80
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
dec ecx
cmp dword [esp + 0xc], eax
mov dword [esp + 8], ecx
mov dword [esp + 0x10], eax
jne 0x415b1f
add eax, ebx
cmp eax, dword [esp + 0x1c]
ja 0x415b1f
mov eax, dword [esp + 0xc]
lea edx, [eax - 3]
xor edi, edi
push 0x10
pop ebp
xor ecx, ecx
inc ecx
cmp edi, edx
jge 0x415ae1
lea eax, [edi + ebx]
movzx eax, ax
mov ebx, dword [esp + 0x18]
movzx eax, word [ebx + eax*2 + 0x20000]
lea ebx, [ebp + 1]
sar ebp, 4
cmp ecx, eax
cmovbe ecx, eax
push 0x10
pop eax
cmovb ebx, eax
cmovb esi, edi
add edi, ebp
mov ebp, ebx
mov ebx, dword [esp]
jmp 0x415aae
cmp ecx, 1
jbe 0x415b13
cmp ebx, ecx
mov eax, ecx
mov edx, 0
cmovb eax, edx
mov edx, ebx
sub edx, eax
mov ebp, dword [esp + 0xc]
mov eax, ebp
cmp ebx, ecx
mov ebx, edx
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 4]
jae 0x4157d9
jmp 0x41658a
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 4]
movzx eax, bx
cmp word [ebp + eax*2 + 0x20000], 1
jne 0x415c45
test esi, esi
jne 0x415c45
mov eax, dword [esp + 0x74]
test eax, eax
je 0x415b6d
cmp eax, 2
jne 0x415b60
lea edi, [ebx - 1]
mov dword [esp], edi
cmp edi, edx
jb 0x415b60
mov edi, dword [esp + 0x2c]
mov eax, edi
sub eax, ebx
cmp eax, 3
jae 0x415bb1
push 2
pop eax
mov dword [esp + 0x74], eax
mov edi, dword [esp + 0x44]
jmp 0x415c45
xor eax, eax
inc eax
mov dword [esp + 0x74], eax
cmp byte [esp + 0xd8], 0
je 0x415c45
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
push dword [esp + 0x34]
call fcn.004199cd
mov edx, dword [esp + 8]
movsd xmm1, qword [0x421360]
add esp, 4
add eax, 4
mov dword [esp + 0xb8], eax
push 2
pop eax
jmp 0x415b41
mov ecx, dword [esp]
mov eax, ecx
sub eax, dword [esp + 0x28]
add eax, dword [esp + 0x40]
sub ecx, edi
mov edx, dword [esp + 0x14]
lea ecx, [edx + ecx]
cmovb ecx, eax
mov eax, dword [esp + 0x34]
cmp dword [ecx], eax
jne 0x415c36
mov esi, dword [esp]
cmp esi, edi
mov edx, dword [esp + 0x30]
cmovb edx, dword [esp + 0xc8]
mov dword [esp + 0xc], ecx
add ecx, 4
mov dword [esp + 0x50], edx
push eax
call fcn.004199cd
pop ecx
lea ebx, [eax + 4]
cmp esi, edi
mov edi, esi
jae 0x415c5e
mov ecx, dword [esp + 0xc]
add ecx, ebx
cmp ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x14]
jne 0x415c30
shl eax, 3
mov edi, ebx
mov ebx, dword [esp + 0x34]
mov ecx, eax
rol ebx, cl
mov ecx, edx
mov edx, dword [esp + 0x30]
push ebx
mov ebx, edi
mov edi, dword [esp + 4]
call fcn.004199cd
pop ecx
add ebx, eax
mov edx, dword [esp + 0x40]
jmp 0x415c62
push 2
pop eax
mov dword [esp + 0x74], eax
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 4]
lea eax, [esi + ebx]
movzx eax, ax
movzx eax, word [ebp + eax*2 + 0x20000]
sub ebx, eax
mov eax, dword [esp + 0x10]
jmp 0x4157d9
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
mov ecx, esi
push dword [esp + 0x34]
call fcn.00419a04
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x2c]
cmp edi, eax
jae 0x415c8a
movsd xmm1, qword [0x421360]
mov edx, dword [esp + 4]
jmp 0x415cd5
sub esi, ecx
cmp esi, dword [esp + 0x14]
movsd xmm1, qword [0x421360]
mov edx, dword [esp + 4]
jne 0x415cd5
cmp dword [esp + 0x28], eax
jae 0x415cd5
mov esi, ecx
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x34]
rol eax, cl
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x40]
push eax
call fcn.00419a04
mov ecx, esi
mov edx, dword [esp + 8]
movsd xmm1, qword [0x421360]
add esp, 4
add ecx, eax
mov eax, ecx
mov ecx, edi
sub ecx, eax
cmp ecx, edx
cmovbe ecx, edx
mov ebp, edi
sub ebp, ecx
add ebp, ebx
mov eax, dword [esp + 0xb8]
cmp ebx, eax
ja 0x415d1f
cmp ebp, eax
jb 0x415d1f
sub edi, eax
add ebx, edi
mov eax, ebx
not eax
mov ecx, dword [esp + 0x2c]
add eax, ecx
cmp eax, 3
cmovb ebx, ecx
xor esi, esi
push 2
pop eax
mov dword [esp + 0x74], eax
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
jmp 0x4157d9
mov eax, ecx
not eax
mov edi, dword [esp + 0x2c]
add eax, edi
xor esi, esi
push 2
pop edx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 4]
mov ebx, edi
cmp eax, 3
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
jb 0x4157d9
mov edx, eax
mov eax, dword [esp + 0xb8]
cmp ebp, eax
cmovae ebp, eax
mov eax, edx
cmp edx, ebp
jae 0x415d8a
mov edx, dword [esp + 0x1c]
sub edx, ecx
cmp edx, 0xffff
jbe 0x415d90
jmp 0x4168f3
lea eax, [ebp - 1]
cmp edx, eax
jae 0x415df2
movzx eax, word [edi]
cmp ax, word [edx]
mov ebx, dword [esp]
jne 0x415df5
add edx, 2
add edi, 2
jmp 0x415df5
mov edx, dword [esp + 0x24]
mov ebp, eax
movzx eax, cx
mov ebx, dword [esp + 0x18]
movzx eax, word [ebx + eax*2 + 0x20000]
mov dword [esp + 0x24], edx
push 2
pop edx
mov dword [esp + 0x74], edx
mov edx, ebp
sub ecx, eax
mov eax, ebp
mov ebx, ecx
jmp 0x415b04
cmp ebp, dword [esp + 0xdc]
jae 0x415e17
movzx eax, word [ecx]
cmp ax, word [ebp]
mov edx, dword [esp + 4]
jne 0x415e1b
add ebp, 2
add ecx, 2
jmp 0x415e1b
cmp ecx, dword [esp + 0xdc]
jae 0x415e3c
movzx eax, word [edx]
cmp ax, word [ecx]
mov edi, dword [esp + 0x44]
jne 0x415e40
add ecx, 2
add edx, 2
jmp 0x415e40
mov ebx, dword [esp]
cmp edx, ebp
jae 0x415e04
mov al, byte [edi]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 8]
sub edx, eax
jmp 0x415951
mov edx, dword [esp + 4]
cmp ebp, dword [esp + 0x30]
jae 0x415e2d
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [ebp]
sete cl
add ebp, ecx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 8]
sub ebp, eax
jmp 0x415a3e
mov edi, dword [esp + 0x44]
cmp ecx, dword [esp + 0x30]
jae 0x415e51
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
sub ecx, ebp
jmp 0x415a5e
mov ebp, eax
jmp 0x4159b8
mov eax, dword [esp + 0x1c]
lea ebx, [eax - 0xffff]
cmp dword [esp + 0x58], eax
cmova ebx, dword [esp + 0x28]
mov dword [ebp + 0x40014], eax
mov esi, dword [esp + 0x3c]
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov dword [esp + 0xd8], eax
mov edi, dword [ebp + eax*4]
lea eax, [esi + 4]
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x34]
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 + 0x74], eax
or edx, ecx
mov edx, ebx
mov ebx, edi
sete byte [esp + 0xb8]
mov dword [esp + 0x24], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0x98], 0
xor esi, esi
mov eax, dword [esp + 0xd0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], edx
cmp ebx, edx
jb 0x416708
mov ecx, dword [esp + 8]
test ecx, ecx
jle 0x416708
mov edi, dword [esp + 0x1c]
sub edi, ebx
mov dword [esp + 0xc], 0
cmp byte [esp + 0x4c], 0
mov dword [esp], ebx
je 0x415f35
cmp edi, 8
jb 0x416192
mov dword [esp + 0x50], edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
mov ebp, eax
sub ebp, ebx
jbe 0x415fb1
cmp ebx, dword [esp + 0xa4]
ja 0x41600d
mov edi, ebx
sub edi, dword [esp + 0x28]
add edi, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
cmp dword [edi], eax
jne 0x41600d
add ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0xc], ebp
cmova ebp, eax
add edi, 4
mov dword [esp + 0xb0], ebp
lea eax, [ebp - 3]
mov edx, dword [esp + 0x20]
cmp eax, edx
jbe 0x41603c
mov edx, dword [edx]
xor edx, dword [edi]
je 0x416035
bsf edx, edx
shr edx, 3
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x18]
jmp 0x416073
mov ecx, ebx
sub ecx, eax
add ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x10]
movzx eax, word [eax + ebx - 1]
cmp ax, word [ebx + ecx - 1]
jne 0x416013
mov eax, dword [esp + 0x34]
cmp dword [ecx], eax
mov eax, dword [esp + 0x88]
mov ebp, dword [esp + 0x18]
jne 0x416025
add ecx, 4
mov ebx, dword [esp + 0x20]
cmp eax, ebx
mov eax, ebx
jbe 0x416581
mov eax, dword [eax]
xor eax, dword [ecx]
je 0x4160cf
bsf edi, eax
shr edi, 3
mov ecx, dword [esp + 8]
mov ebx, dword [esp]
jmp 0x416158
mov eax, dword [esp + 0x10]
jmp 0x41601c
mov eax, ebx
mov ecx, dword [esp + 8]
mov ebx, dword [esp]
mov ebp, dword [esp + 0x18]
jmp 0x416192
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp]
jmp 0x416192
add edi, 4
mov edx, dword [esp + 0x74]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x64]
lea ebx, [ecx + edx]
cmp edx, eax
jae 0x41647b
mov ecx, dword [edx]
xor ecx, dword [edi]
jne 0x416060
add edx, 4
add edi, 4
add ebx, 4
jmp 0x416047
bsf edx, ecx
shr edx, 3
add edx, ebx
mov ecx, dword [esp + 8]
mov ebx, dword [esp]
mov edi, dword [esp + 0xc]
lea eax, [edx + 4]
mov dword [esp + 0xc], eax
cmp edi, dword [esp + 0x30]
jae 0x4160be
mov eax, dword [esp + 0x3c]
add eax, edx
add eax, 4
mov edi, dword [esp + 0xb0]
cmp eax, edi
jne 0x4160be
mov eax, dword [esp + 0x14]
mov edx, eax
mov ecx, edi
cmp dword [esp + 0x88], edi
jbe 0x41610b
mov ecx, dword [edi]
xor ecx, dword [eax]
je 0x416101
bsf ecx, ecx
shr ecx, 3
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
jmp 0x416174
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
jmp 0x41617e
add ecx, 4
mov ebp, dword [esp + 0x74]
mov ebx, dword [esp]
mov eax, dword [esp + 0x64]
lea edx, [eax + ebp]
mov eax, dword [esp + 0x88]
cmp ebp, eax
jae 0x4164d1
mov edi, dword [ebp]
xor edi, dword [ecx]
jne 0x416144
add ebp, 4
add ecx, 4
add edx, 4
jmp 0x4160e7
lea ecx, [edi + 4]
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xcc]
sub eax, ebx
mov edi, dword [esp + 0x5c]
cmp edi, eax
cmovb eax, edi
mov edi, ecx
sub edi, eax
mov eax, dword [esp + 0x88]
cmp ecx, eax
jae 0x4164f1
mov ebx, dword [ecx]
xor ebx, dword [edx]
jne 0x416161
add ecx, 4
add edx, 4
add edi, 4
mov ebx, dword [esp]
jmp 0x416128
bsf edi, edi
shr edi, 3
add edi, edx
mov edx, dword [esp + 4]
mov ecx, dword [esp + 8]
mov ebp, dword [esp + 0x18]
add edi, 4
mov eax, dword [esp + 0x10]
jmp 0x41617e
bsf ecx, ebx
shr ecx, 3
add ecx, edi
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp]
mov edi, dword [esp + 0xc]
add edi, ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0xc], edi
cmp edi, eax
jle 0x416192
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
dec ecx
cmp dword [esp + 0xc], eax
mov dword [esp + 8], ecx
mov dword [esp + 0x10], eax
jne 0x416229
add eax, ebx
cmp eax, dword [esp + 0x1c]
ja 0x416229
mov eax, dword [esp + 0xc]
lea edx, [eax - 3]
xor edi, edi
push 0x10
pop ebp
xor ecx, ecx
inc ecx
cmp edi, edx
jge 0x4161ef
lea eax, [edi + ebx]
movzx eax, ax
mov ebx, dword [esp + 0x18]
movzx eax, word [ebx + eax*2 + 0x20000]
lea ebx, [ebp + 1]
sar ebp, 4
cmp ecx, eax
cmovbe ecx, eax
push 0x10
pop eax
cmovb ebx, eax
cmovb esi, edi
add edi, ebp
mov ebp, ebx
mov ebx, dword [esp]
jmp 0x4161bc
cmp ecx, 1
jbe 0x416221
cmp ebx, ecx
mov eax, ecx
mov edx, 0
cmovb eax, edx
mov edx, ebx
sub edx, eax
mov edi, dword [esp + 0xc]
mov eax, edi
cmp ebx, ecx
mov ebx, edx
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 4]
jae 0x415f00
jmp 0x41670a
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 4]
movzx eax, bx
cmp word [ebp + eax*2 + 0x20000], 1
jne 0x416353
test esi, esi
jne 0x416353
mov eax, dword [esp + 0x98]
test eax, eax
je 0x416279
cmp eax, 2
jne 0x41626d
lea edi, [ebx - 1]
mov dword [esp], edi
cmp edi, edx
jb 0x41626d
mov edi, dword [esp + 0x2c]
mov eax, edi
sub eax, ebx
cmp eax, 3
jae 0x4162c0
push 2
pop eax
mov dword [esp + 0x98], eax
jmp 0x416353
xor eax, eax
inc eax
mov dword [esp + 0x98], eax
cmp byte [esp + 0xb8], 0
je 0x416353
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
push dword [esp + 0x34]
call fcn.004199cd
mov edx, dword [esp + 8]
movsd xmm1, qword [0x421360]
add esp, 4
add eax, 4
mov dword [esp + 0xc0], eax
push 2
pop eax
jmp 0x41624e
mov ecx, dword [esp]
mov eax, ecx
sub eax, dword [esp + 0x28]
add eax, dword [esp + 0x40]
sub ecx, edi
mov edx, dword [esp + 0x14]
lea ecx, [edx + ecx]
cmovb ecx, eax
mov eax, dword [esp + 0x34]
cmp dword [ecx], eax
jne 0x416345
mov esi, dword [esp]
cmp esi, edi
mov edx, dword [esp + 0x30]
cmovb edx, dword [esp + 0xc8]
mov dword [esp + 0xc], ecx
add ecx, 4
mov dword [esp + 0x50], edx
push eax
call fcn.004199cd
pop ecx
lea ebx, [eax + 4]
cmp esi, edi
mov edi, esi
jae 0x41636c
mov ecx, dword [esp + 0xc]
add ecx, ebx
cmp ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x14]
jne 0x41633f
shl eax, 3
mov edi, ebx
mov ebx, dword [esp + 0x34]
mov ecx, eax
rol ebx, cl
mov ecx, edx
mov edx, dword [esp + 0x30]
push ebx
mov ebx, edi
mov edi, dword [esp + 4]
call fcn.004199cd
pop ecx
add ebx, eax
mov edx, dword [esp + 0x40]
jmp 0x416370
push 2
pop eax
mov dword [esp + 0x98], eax
mov edx, dword [esp + 4]
lea eax, [esi + ebx]
movzx eax, ax
movzx eax, word [ebp + eax*2 + 0x20000]
sub ebx, eax
mov eax, dword [esp + 0x10]
jmp 0x415f00
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
mov ecx, esi
push dword [esp + 0x34]
call fcn.00419a04
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x2c]
cmp edi, eax
jae 0x416398
movsd xmm1, qword [0x421360]
mov edx, dword [esp + 4]
jmp 0x4163e3
sub esi, ecx
cmp esi, dword [esp + 0x14]
movsd xmm1, qword [0x421360]
mov edx, dword [esp + 4]
jne 0x4163e3
cmp dword [esp + 0x28], eax
jae 0x4163e3
mov esi, ecx
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x34]
rol eax, cl
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x40]
push eax
call fcn.00419a04
mov ecx, esi
mov edx, dword [esp + 8]
movsd xmm1, qword [0x421360]
add esp, 4
add ecx, eax
mov eax, ecx
mov ecx, edi
sub ecx, eax
cmp ecx, edx
cmovbe ecx, edx
sub edi, ecx
add edi, ebx
mov eax, dword [esp + 0xc0]
cmp ebx, eax
ja 0x41642d
cmp edi, eax
jb 0x41642d
mov ecx, dword [esp]
sub ecx, eax
add ebx, ecx
mov eax, ebx
not eax
mov ecx, dword [esp + 0x2c]
add eax, ecx
cmp eax, 3
cmovb ebx, ecx
xor esi, esi
push 2
pop eax
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x10]
jmp 0x415f00
mov eax, ecx
not eax
mov ebx, dword [esp + 0x2c]
add eax, ebx
xor esi, esi
push 2
pop edx
mov dword [esp + 0x98], edx
mov edx, dword [esp + 4]
cmp eax, 3
mov eax, dword [esp + 0x10]
jb 0x415f00
mov edx, eax
mov eax, dword [esp + 0xc0]
cmp edi, eax
cmovae edi, eax
mov eax, edx
cmp edx, edi
jae 0x4164a5
mov edx, dword [esp + 0x1c]
sub edx, ecx
cmp edx, 0xffff
jbe 0x4164ab
jmp 0x4168fe
mov eax, dword [esp + 0xb0]
dec eax
cmp edx, eax
jae 0x41652d
movzx eax, word [edi]
cmp ax, word [edx]
mov ebx, dword [esp]
jne 0x416530
add edx, 2
add edi, 2
jmp 0x416530
mov edx, dword [esp + 0x24]
mov edi, eax
movzx eax, cx
movzx eax, word [ebp + eax*2 + 0x20000]
mov dword [esp + 0x24], edx
push 2
pop edx
mov dword [esp + 0x98], edx
mov edx, edi
sub ecx, eax
mov eax, edi
mov ebx, ecx
jmp 0x416212
cmp ebp, dword [esp + 0xdc]
jae 0x416557
movzx eax, word [ecx]
mov edi, ebp
cmp ax, word [ebp]
mov edx, dword [esp + 4]
jne 0x41655d
add edi, 2
add ecx, 2
jmp 0x41655d
cmp ecx, dword [esp + 0xdc]
jae 0x416508
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x416508
add ecx, 2
add edx, 2
cmp ecx, dword [esp + 0x30]
jae 0x416519
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
sub ecx, dword [esp + 0xb0]
jmp 0x416174
mov ebx, dword [esp]
cmp edx, dword [esp + 0xb0]
jae 0x416544
mov al, byte [edi]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0xc]
sub edx, eax
jmp 0x416073
mov edi, ebp
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0x18]
cmp edi, dword [esp + 0x30]
jae 0x416572
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [edi]
sete cl
add edi, ecx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 8]
sub edi, eax
jmp 0x416158
mov ebp, eax
jmp 0x4160d6
mov ebp, eax
mov dword [esp + 0xc], ebp
mov ecx, dword [esp + 8]
test ecx, ecx
jle 0x4168a3
mov eax, dword [esp + 0x1c]
sub eax, edx
cmp eax, 0xfffe
mov esi, dword [esp + 0x54]
mov ebp, dword [esp + 0x18]
ja 0x4168a7
mov ebx, dword [esi + 0x40000]
mov eax, dword [esi + 0x40004]
mov dword [esp + 0x10], eax
sub ebx, eax
mov eax, dword [esi + 0x4000c]
add ebx, eax
mov edi, dword [esp + 0x98]
mov edi, dword [esi + edi*4]
mov dword [esp], edi
add edx, edi
mov dword [esp + 0x50], ebx
sub edx, ebx
mov ebx, dword [esp + 0x10]
sub ebx, eax
mov dword [esp + 0x10], ebx
mov edi, dword [esp + 0x1c]
sub edi, edx
cmp edi, 0xffff
mov eax, dword [esp + 0x34]
ja 0x4166ff
sub ecx, 1
jb 0x4166ff
mov esi, dword [esp]
cmp dword [ebx + esi], eax
jne 0x4166b0
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov ebp, dword [esp + 0x50]
sub ebp, esi
add ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
cmova ebp, eax
mov eax, dword [esp]
lea edx, [ebx + eax]
add edx, 4
lea ebx, [ebp - 3]
mov ecx, dword [esp + 0x20]
cmp ebx, ecx
jbe 0x41665e
mov ecx, dword [ecx]
xor ecx, dword [edx]
je 0x416654
bsf ecx, ecx
shr ecx, 3
jmp 0x416682
add edx, 4
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x64]
lea esi, [eax + ecx]
cmp ecx, ebx
jae 0x4166cb
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x41667a
add ecx, 4
add edx, 4
add esi, 4
jmp 0x416665
bsf ecx, eax
shr ecx, 3
add ecx, esi
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 4]
add ecx, 4
mov ebx, dword [esp + 0xc]
cmp ecx, ebx
mov eax, dword [esp + 0x24]
cmovg eax, edi
mov dword [esp + 0x24], eax
cmovg ebx, ecx
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp]
movzx eax, si
mov edi, dword [esp + 0x54]
movzx eax, word [edi + eax*2 + 0x20000]
sub esi, eax
mov dword [esp], esi
sub edx, eax
jmp 0x4165ec
lea eax, [ebp - 1]
cmp ecx, eax
jae 0x4166e0
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x4166e0
add ecx, 2
add edx, 2
cmp ecx, ebp
jae 0x4166ef
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x20]
sub ecx, eax
jmp 0x41668a
mov edi, dword [esp + 0x44]
jmp 0x4168a7
mov edi, eax
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 8]
test ecx, ecx
jle 0x41687c
mov eax, dword [esp + 0x1c]
sub eax, edx
cmp eax, 0xfffe
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x44]
ja 0x416880
mov ebx, dword [esi + 0x40000]
mov eax, dword [esi + 0x40004]
mov dword [esp + 0x10], eax
sub ebx, eax
mov eax, dword [esi + 0x4000c]
add ebx, eax
mov edi, dword [esp + 0xd8]
mov edi, dword [esi + edi*4]
mov dword [esp], edi
add edx, edi
mov dword [esp + 0x50], ebx
sub edx, ebx
mov ebx, dword [esp + 0x10]
sub ebx, eax
mov dword [esp + 0x10], ebx
mov edi, dword [esp + 0x1c]
sub edi, edx
cmp edi, 0xffff
mov eax, dword [esp + 0x34]
ja 0x41687c
sub ecx, 1
jb 0x41687c
mov esi, dword [esp]
cmp dword [ebx + esi], eax
jne 0x41682d
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov ebp, dword [esp + 0x50]
sub ebp, esi
add ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
cmova ebp, eax
mov eax, dword [esp]
lea edx, [ebx + eax]
add edx, 4
lea ebx, [ebp - 3]
mov ecx, dword [esp + 0x20]
cmp ebx, ecx
jbe 0x4167db
mov ecx, dword [ecx]
xor ecx, dword [edx]
je 0x4167d4
bsf ecx, ecx
shr ecx, 3
jmp 0x4167ff
add edx, 4
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x64]
lea esi, [eax + ecx]
cmp ecx, ebx
jae 0x416848
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x4167f7
add ecx, 4
add edx, 4
add esi, 4
jmp 0x4167e2
bsf ecx, eax
shr ecx, 3
add ecx, esi
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 4]
add ecx, 4
mov ebx, dword [esp + 0xc]
cmp ecx, ebx
mov eax, dword [esp + 0x24]
cmovg eax, edi
mov dword [esp + 0x24], eax
cmovg ebx, ecx
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp]
movzx eax, si
mov edi, dword [esp + 0x54]
movzx eax, word [edi + eax*2 + 0x20000]
sub esi, eax
mov dword [esp], esi
sub edx, eax
jmp 0x41676c
lea eax, [ebp - 1]
cmp ecx, eax
jae 0x41685d
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x41685d
add ecx, 2
add edx, 2
cmp ecx, ebp
jae 0x41686c
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x20]
sub ecx, eax
jmp 0x416807
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0xc]
lea eax, [edx - 0x13]
cmp eax, 0x12
mov ecx, edx
push 0x12
pop eax
cmovb ecx, eax
cmp byte [esp + 0x4c], 0
cmove ecx, edx
cmp edx, dword [esp + 0xa0]
jmp 0x4168c4
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
lea eax, [edx - 0x13]
cmp eax, 0x12
mov ecx, edx
push 0x12
pop eax
cmovb ecx, eax
cmp byte [esp + 0x4c], 0
cmove ecx, edx
cmp edx, 3
mov esi, dword [esp + 0x14]
jle 0x4168ce
test ecx, ecx
jne 0x416909
dec dword [esp + 0x64]
inc dword [esp + 0xcc]
add dword [esp + 0x6c], 0x10
add dword [esp + 0x84], 0x10
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x7c]
jmp 0x415625
mov ebp, eax
mov edx, dword [esp + 4]
jmp 0x41658a
mov edi, eax
mov edx, dword [esp + 4]
jmp 0x41670a
cmp ecx, dword [esp + 0xe4]
ja 0x416e06
mov eax, dword [esp + 0xc4]
add eax, ecx
cmp eax, 0xfff
mov edi, dword [esp + 0x70]
jg 0x416e14
mov eax, dword [esp + 0x78]
lea edx, [edi + eax]
mov dword [esp + 0xc], edx
mov edi, dword [edi + eax + 0xc]
lea eax, [edi - 0xf]
xor edx, edx
mov esi, 0xff
div esi
lea ebx, [edi + 1]
cmp edi, 0xf
lea edx, [edi + eax + 1]
mov eax, edi
mov dword [esp], edi
cmovl edx, edi
mov dword [esp + 8], edx
push 3
pop ebp
xor esi, esi
inc esi
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x6c]
sub ebp, 1
jb 0x4169c5
mov eax, dword [esp + 0xc]
mov edi, dword [eax]
sub edi, dword [esp + 8]
mov eax, ebx
cmp ebx, 0xf
jl 0x4169ab
mov eax, dword [esp]
mov edx, dword [esp + 0x1c]
add eax, edx
mov dword [esp + 0x10], eax
lea eax, [ebx - 0xf]
xor edx, edx
mov dword [esp + 0x6c], esi
mov esi, 0xff
div esi
mov esi, dword [esp + 0x6c]
mov edx, dword [esp + 0x10]
add eax, edx
inc eax
add eax, edi
cmp eax, dword [esi]
jge 0x4169bb
movsd qword [esi + 4], xmm1
mov dword [esi + 0xc], ebx
mov dword [esi], eax
inc dword [esp + 0x1c]
add esi, 0x10
inc ebx
jmp 0x41696d
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x78]
add eax, edx
add eax, 8
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xc4]
mov esi, eax
sub esi, dword [esp]
shl esi, 4
add esi, edx
mov dword [esp + 4], esi
mov esi, dword [esp + 8]
lea edi, [esi + 3]
mov dword [esp + 0x10], edi
add esi, 4
mov dword [esp + 8], esi
push 4
pop ebx
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x44]
cmp ebx, ecx
jg 0x416aec
lea ebp, [eax + ebx]
mov edx, dword [esp + 0x1c]
cmp dword [edx], 1
jne 0x416a4d
xor esi, esi
cmp eax, dword [esp]
jle 0x416a29
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov eax, dword [esp + 0x10]
cmp ebx, 0x13
jb 0x416a46
lea eax, [ebx - 0x13]
xor edx, edx
mov edi, 0xff
div edi
mov edi, dword [esp + 0x44]
add eax, dword [esp + 8]
add eax, esi
mov edx, dword [esp]
jmp 0x416a72
mov eax, dword [esp + 0xc]
mov esi, dword [eax]
push 3
pop eax
cmp ebx, 0x13
jb 0x416a6e
lea eax, [ebx - 0x13]
xor edx, edx
mov edi, 0xff
div edi
mov edi, dword [esp + 0x44]
add eax, 4
add eax, esi
xor edx, edx
mov esi, dword [esp + 0x38]
add esi, 3
cmp ebp, esi
jg 0x416aa5
mov esi, dword [esp + 0x84]
mov esi, dword [esi]
add esi, dword [esp + 0xec]
cmp eax, esi
jle 0x416aa5
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0xc4]
mov esi, dword [esp + 0x84]
jmp 0x416ad8
mov esi, dword [esp + 0x38]
cmp esi, ebp
cmovge ebp, esi
cmp ecx, ebx
cmove esi, ebp
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x84]
mov dword [esi + 8], ebx
mov ebp, dword [esp + 0x24]
mov dword [esi + 4], ebp
mov dword [esi + 0xc], edx
mov dword [esi], eax
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0xc4]
inc ebx
add esi, 0x10
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x14]
jmp 0x416a08
mov eax, dword [esp + 0x38]
shl eax, 4
lea ecx, [edx + eax]
add eax, dword [esp + 0xf4]
xor edx, edx
inc edx
mov ebp, dword [esp + 0x18]
cmp edx, 4
je 0x416b21
movsd qword [eax - 8], xmm1
mov dword [eax], edx
mov esi, dword [ecx]
add esi, edx
mov dword [eax - 0xc], esi
mov esi, dword [esp + 0x14]
inc edx
add eax, 0x10
jmp 0x416b04
mov ecx, dword [esp + 0x7c]
jmp 0x4155e7
mov edx, dword [esp + 0x38]
mov eax, edx
shl eax, 4
mov edi, dword [esp + 0x70]
mov ebp, dword [edi + eax + 4]
mov ecx, dword [edi + eax + 8]
mov ebx, edx
sub ebx, ecx
mov eax, ebx
shl eax, 4
mov edx, dword [edi + eax + 4]
mov esi, dword [edi + eax + 8]
mov dword [edi + eax + 8], ecx
mov dword [edi + eax + 4], ebp
mov ecx, esi
mov ebp, edx
sub ebx, esi
jge 0x416b43
xor edx, edx
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x94]
mov ecx, ebx
shl cl, 4
mov ch, bl
sub ch, al
mov esi, eax
shl al, 4
sub cl, al
mov dword [esp + 0x48], ebx
mov eax, ebx
mov dword [esp + 0x94], esi
sub eax, esi
mov ebp, edx
shl ebp, 4
add ebp, dword [esp + 0xd4]
add ch, 0xf1
xor esi, esi
lea ebx, [edx + esi]
cmp ebx, dword [esp + 0x38]
jge 0x416d28
mov edi, dword [ebp]
cmp edi, 1
jne 0x416bbe
inc esi
add cl, 0x10
inc eax
add ebp, 0x10
inc ch
jmp 0x416b9d
mov dword [esp + 0xc], edi
mov edx, dword [esp + 0x48]
sub edx, dword [esp + 0x94]
mov dword [esp], edx
xor edx, edx
mov edi, 0xff
div edi
mov edx, dword [ebp - 4]
mov ebp, dword [esp]
mov dword [esp + 0x34], edx
cmp dword [esp + 0x60], 0
mov edi, esi
je 0x416c09
mov edx, dword [esp + 0x80]
add edx, ebp
add eax, edx
add eax, edi
add eax, 9
cmp eax, dword [esp + 0xa8]
ja 0x4194b8
lea eax, [edi + ebp]
cmp eax, 0xf
jb 0x416c42
lea eax, [edi + ebp]
add eax, 0xfffffff1
mov ecx, dword [esp + 0x80]
mov byte [ecx], 0xf0
lea ebp, [ecx + 2]
mov edx, dword [esp + 0x94]
mov edi, dword [esp + 0xc]
cmp eax, 0xff
jb 0x416c5b
mov byte [ebp - 1], 0xff
add eax, 0xffffff01
inc ebp
jmp 0x416c2f
mov eax, dword [esp + 0x80]
lea ebp, [eax + 1]
mov byte [eax], cl
mov edx, dword [esp + 0x94]
mov edi, dword [esp + 0xc]
jmp 0x416c5e
mov byte [ebp - 1], al
add ebx, edi
lea ecx, [esi + ebp]
add ecx, dword [esp]
mov eax, edx
mov edx, ebp
movsd xmm0, qword [eax]
movsd qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, ecx
jb 0x416c6a
add ebp, dword [esp]
lea eax, [edi - 4]
mov dword [esp], eax
xor edx, edx
mov edi, 0xff
div edi
mov edx, dword [esp + 0x34]
mov word [ecx], dx
cmp dword [esp + 0x60], 0
mov edi, esi
je 0x416cb3
lea ecx, [edi + ebp]
add eax, ecx
add eax, 8
cmp eax, dword [esp + 0xa8]
ja 0x4194b8
lea eax, [edi + ebp]
add eax, 2
mov edi, dword [esp + 0x80]
mov cl, byte [edi]
mov ebp, dword [esp]
cmp ebp, 0xf
jb 0x416ced
add cl, 0xf
mov byte [edi], cl
mov ecx, dword [esp + 0xc]
add ecx, 0xffffffed
cmp ecx, 0x1fe
jb 0x416cf5
or word [eax], 0xffff
add eax, 2
add ecx, 0xfffffe02
jmp 0x416cd6
mov edx, ebp
add cl, dl
mov byte [edi], cl
jmp 0x416d0a
cmp ecx, 0xff
jb 0x416d07
add ecx, 0xffffff01
mov byte [eax], 0xff
inc eax
mov byte [eax], cl
inc eax
add esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x48]
add ecx, esi
mov edx, ecx
mov dword [esp + 0x80], eax
mov eax, ecx
mov edx, ebx
mov ebx, ecx
jmp 0x416b6d
mov eax, dword [esp + 0x48]
add eax, esi
mov ebx, eax
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x94]
jmp 0x414ae8
mov esi, dword [esp + 0x80]
lea eax, [esi + 1]
mov edx, ebx
shl dl, 4
mov byte [esi], dl
jmp 0x416d56
mov byte [eax - 1], dl
add ebx, eax
mov edx, dword [esp + 0x94]
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ebx
jb 0x416d5f
lea eax, [ecx - 4]
mov edi, eax
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x34]
mov word [ebx], dx
cmp dword [esp + 0x60], 0
je 0x416d9f
add eax, ebx
add eax, 8
cmp eax, dword [esp + 0xa8]
ja 0x4194b2
add ebx, 2
mov ebp, dword [esp + 0x80]
mov al, byte [ebp]
cmp edi, 0xf
jb 0x416dce
add al, 0xf
mov byte [ebp], al
lea eax, [ecx - 0x13]
cmp eax, 0x1fe
jb 0x416dd7
or word [ebx], 0xffff
add ebx, 2
add eax, 0xfffffe02
jmp 0x416db9
mov edx, edi
add al, dl
mov byte [ebp], al
jmp 0x416dea
cmp eax, 0xff
jb 0x416de7
add eax, 0xffffff01
mov byte [ebx], 0xff
inc ebx
mov byte [ebx], al
inc ebx
mov eax, dword [esp + 0x48]
add eax, ecx
mov ecx, eax
mov edx, eax
mov dword [esp + 0x80], ebx
mov ebx, eax
mov eax, dword [esp + 0x60]
jmp 0x414ae8
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x70]
jmp 0x416e1c
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x38], eax
mov ebx, dword [esp + 0xc4]
mov ebp, dword [esp + 0x24]
jmp 0x416b43
xor eax, eax
mov edi, dword [esp + 0x60]
cmp edi, 2
setne al
mov edx, dword [esp + 0xe0]
add ebp, edx
mov esi, dword [esp + 0xf0]
and dword [esi], 0
lea eax, [eax + eax*4]
add eax, ebp
add eax, 0xfffffffb
mov dword [esp + 0xac], eax
mov eax, ecx
mov dword [esp + 0x58], edx
cmp ebx, 0xd
jb 0x4196ac
lea eax, [ecx + ebx]
add eax, 0xfffffffb
lea edx, [eax - 3]
mov dword [esp], edx
mov dword [esp + 0x3c], eax
dec eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xc0], ebx
lea eax, [ebx + ecx - 5]
mov dword [esp + 0xc8], eax
mov dword [esp + 0x20], 0
mov edx, ecx
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x58], eax
mov dword [esp + 0xa8], 0
push 0xfffffffffffffffc
pop eax
sub eax, edx
mov dword [esp + 0x50], eax
mov eax, edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x5c], edx
cmp edx, dword [esp + 0xe8]
ja 0x41969d
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 0x4001c]
mov dword [esp + 0xa4], eax
mov eax, dword [esi + 0x40004]
mov ecx, dword [esi + 0x40008]
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x4000c]
mov ebx, edx
sub ebx, eax
add ebx, ecx
mov edi, dword [esi + 0x40010]
mov dword [esp + 0x14], edi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x48], ecx
sub eax, ecx
mov dword [esp + 8], edx
mov ecx, dword [edx]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x40014]
cmp ecx, ebx
jae 0x416f61
imul edx, dword [eax + ecx], 0x9e3779b1
shr edx, 0x11
mov esi, ecx
mov edi, dword [esp + 0x18]
sub esi, dword [edi + edx*4]
mov edi, 0xffff
cmp esi, edi
jb 0x416f4c
mov esi, 0xffff
and edi, ecx
mov ebp, dword [esp + 0x18]
mov word [ebp + edi*2 + 0x20000], si
mov dword [ebp + edx*4], ecx
inc ecx
jmp 0x416f27
mov ecx, dword [esp + 0x14]
lea eax, [ecx + 0x10000]
lea edx, [ebx - 0xffff]
cmp eax, ebx
cmova edx, ecx
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 0x48]
add eax, ebp
sub eax, ecx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x18]
mov dword [eax + 0x40014], ebx
mov edi, dword [esp + 8]
imul ecx, dword [edi], 0x9e3779b1
shr ecx, 0x11
mov dword [esp + 0x84], ecx
mov esi, dword [eax + ecx*4]
mov edx, dword [esp + 0x10]
movzx eax, dx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
movzx eax, dl
shr edx, 0x18
xor edx, eax
lea eax, [edi + 4]
mov dword [esp + 0x30], eax
or edx, ecx
lea eax, [edi + 8]
mov dword [esp + 0x44], eax
lea eax, [ebp - 4]
mov dword [esp + 0x38], eax
sete byte [esp + 0x68]
mov eax, dword [esp + 0x2c]
lea eax, [eax + 4]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x8c]
lea eax, [ebp + eax]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x54], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0xd0]
mov dword [esp + 0xc], eax
push 3
pop eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x40], ebx
cmp esi, eax
jb 0x4174da
cmp dword [esp + 0xc], 0
jle 0x4174da
mov eax, dword [esp + 0x48]
mov ebp, eax
sub ebp, esi
mov dword [esp + 0x4c], ebp
jbe 0x4170a5
cmp esi, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
ja 0x4171f3
mov ecx, esi
sub ecx, dword [esp + 0x14]
add ecx, dword [esp + 0x34]
cmp dword [ecx], eax
jne 0x4171f3
mov eax, dword [esp + 8]
lea edi, [eax + ebp]
mov eax, dword [esp + 0x3c]
cmp edi, eax
mov edx, edi
cmova edx, eax
add ecx, 4
mov dword [esp + 0x28], edx
lea eax, [edx - 3]
mov edx, dword [esp + 0x30]
cmp eax, edx
jbe 0x4170f9
mov edx, dword [edx]
xor edx, dword [ecx]
je 0x4170f2
bsf edx, edx
shr edx, 3
jmp 0x417125
mov edx, esi
sub edx, eax
add edx, dword [esp + 0x2c]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
movzx eax, word [eax + ecx - 1]
cmp ax, word [ecx + edx - 1]
jne 0x4171f3
mov eax, dword [esp + 0x10]
cmp dword [edx], eax
jne 0x4171f3
add edx, 4
mov ecx, dword [esp + 0x30]
cmp dword [esp], ecx
jbe 0x41716c
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x417165
bsf ecx, eax
shr ecx, 3
jmp 0x4171ce
add ecx, 4
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x50]
lea ebp, [ebx + edx]
cmp edx, eax
jae 0x417435
mov ebx, dword [edx]
xor ebx, dword [ecx]
jne 0x417119
add edx, 4
add ecx, 4
add ebp, 4
jmp 0x417100
bsf edx, ebx
shr edx, 3
add edx, ebp
mov ebx, dword [esp + 0x40]
lea ecx, [edx + 4]
cmp edi, dword [esp + 0x3c]
jae 0x4171e1
mov eax, dword [esp + 8]
add eax, edx
add eax, 4
mov edx, dword [esp + 0x28]
cmp eax, edx
jne 0x4171e1
mov eax, edx
mov ebp, dword [esp + 0x2c]
mov edi, ebp
cmp dword [esp], edx
jbe 0x417196
mov edx, eax
mov eax, dword [eax]
xor eax, dword [ebp]
je 0x41718c
bsf edx, eax
shr edx, 3
jmp 0x4171df
add edx, 4
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x50]
add eax, ecx
cmp ecx, dword [esp]
jae 0x417452
mov edi, dword [ecx]
xor edi, dword [edx]
jne 0x4171c6
add ecx, 4
add edx, 4
add eax, 4
jmp 0x417172
add edx, 4
mov edi, dword [esp + 0xbc]
mov ebx, dword [esp + 0x7c]
sub ebx, esi
mov eax, dword [esp + 0xc8]
cmp ebx, eax
cmovae ebx, eax
mov eax, edx
sub eax, ebx
cmp edx, dword [esp]
jae 0x417483
mov ebx, dword [edx]
xor ebx, dword [edi]
jne 0x4171d3
add edx, 4
add edi, 4
add eax, 4
jmp 0x4171ac
bsf ecx, edi
shr ecx, 3
add ecx, eax
add ecx, 4
jmp 0x4171e1
bsf edx, ebx
shr edx, 3
add edx, eax
mov ebx, dword [esp + 0x40]
add ecx, edx
cmp ecx, dword [esp + 4]
jle 0x4171f3
mov eax, ebx
sub eax, esi
mov dword [esp + 0x54], eax
mov dword [esp + 4], ecx
dec dword [esp + 0xc]
movzx eax, si
mov ecx, dword [esp + 0x18]
movzx ebp, word [ecx + eax*2 + 0x20000]
cmp dword [esp + 0xd0], 0x81
jl 0x417309
cmp bp, 1
jne 0x417309
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x417255
cmp ecx, 2
mov eax, dword [esp + 0x1c]
jne 0x41724c
lea edi, [esi - 1]
cmp edi, eax
jb 0x41724c
cmp dword [esp + 0x4c], 3
jae 0x417288
push 2
pop eax
mov dword [esp + 0x24], eax
jmp 0x417309
mov dword [esp + 0x24], ecx
jmp 0x417309
xor eax, eax
inc eax
mov dword [esp + 0x24], eax
cmp byte [esp + 0x68], 0
je 0x417309
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x3c]
push dword [esp + 0x10]
call fcn.004199cd
pop ecx
add eax, 4
mov dword [esp + 0x88], eax
push 2
pop ecx
jmp 0x417229
mov eax, edi
sub eax, dword [esp + 0x14]
add eax, dword [esp + 0x34]
mov ecx, edi
mov ebx, dword [esp + 0x48]
sub ecx, ebx
mov edx, dword [esp + 0x2c]
lea ecx, [edx + ecx]
cmovb ecx, eax
mov eax, dword [esp + 0x10]
cmp dword [ecx], eax
jne 0x4172fe
cmp edi, ebx
mov ebp, dword [esp + 0x3c]
cmovb ebp, dword [esp + 0x64]
mov dword [esp + 0x4c], ecx
add ecx, 4
mov edx, ebp
push eax
call fcn.004199cd
pop ecx
lea esi, [eax + 4]
cmp edi, ebx
jae 0x417317
mov ecx, dword [esp + 0x4c]
mov ebx, ecx
add ecx, esi
cmp ecx, ebp
jne 0x4172f8
shl eax, 3
mov edx, dword [esp + 0x10]
mov ecx, eax
rol edx, cl
mov eax, edx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x3c]
push eax
call fcn.004199cd
pop ecx
add esi, eax
mov edx, dword [esp + 0x34]
jmp 0x41731f
push 2
pop eax
mov dword [esp + 0x24], eax
mov ebx, dword [esp + 0x40]
movzx eax, bp
sub esi, eax
mov eax, dword [esp + 0x1c]
jmp 0x41702f
mov ebx, dword [esp + 0x4c]
mov edx, dword [esp + 0x2c]
mov ecx, ebx
push dword [esp + 0x10]
call fcn.00419a04
pop ecx
mov ebp, eax
cmp edi, dword [esp + 0x48]
jb 0x417367
sub ebx, ebp
cmp ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
jne 0x41736b
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x48]
jae 0x41736b
mov ecx, ebp
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x10]
rol eax, cl
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x34]
push eax
call fcn.00419a04
pop ecx
add ebp, eax
mov eax, dword [esp + 0x1c]
mov ecx, edi
sub ecx, ebp
cmp ecx, eax
cmovbe ecx, eax
mov ebx, edi
sub ebx, ecx
add ebx, esi
mov eax, dword [esp + 0x88]
cmp esi, eax
ja 0x4173b1
cmp ebx, eax
jb 0x4173b1
sub edi, eax
add esi, edi
mov eax, esi
not eax
mov ecx, dword [esp + 0x48]
add eax, ecx
cmp eax, 3
cmovb esi, ecx
push 2
pop eax
mov dword [esp + 0x24], eax
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x1c]
jmp 0x41702f
mov eax, ecx
not eax
mov esi, dword [esp + 0x48]
add eax, esi
push 2
pop edx
mov dword [esp + 0x24], edx
cmp eax, 3
mov edi, ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x1c]
jb 0x41702f
mov edx, dword [esp + 0x88]
cmp edi, edx
cmovae edi, edx
mov esi, dword [esp + 4]
cmp esi, edi
jae 0x4173fa
mov edx, ebx
sub edx, ecx
cmp edx, 0xffff
jbe 0x417400
jmp 0x41769a
mov edx, dword [esp + 0x54]
mov edi, esi
movzx eax, cx
mov esi, dword [esp + 0x18]
movzx eax, word [esi + eax*2 + 0x20000]
mov dword [esp + 0x28], edx
mov dword [esp + 0x54], edx
push 2
pop edx
mov dword [esp + 0x24], edx
mov dword [esp + 4], edi
sub ecx, eax
mov eax, dword [esp + 0x1c]
mov esi, ecx
jae 0x41702f
jmp 0x4174e6
mov eax, dword [esp + 0x28]
dec eax
cmp edx, eax
jae 0x4174ba
movzx eax, word [ecx]
cmp ax, word [edx]
mov ebx, dword [esp + 0x40]
jne 0x4174be
add edx, 2
add ecx, 2
jmp 0x4174be
cmp ecx, dword [esp + 0xd4]
jae 0x417469
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x417469
add ecx, 2
add edx, 2
cmp ecx, dword [esp + 0x3c]
jae 0x41747a
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
sub ecx, dword [esp + 0x30]
jmp 0x4171ce
cmp edx, dword [esp + 0xd4]
jae 0x41749a
movzx eax, word [edi]
cmp ax, word [edx]
jne 0x41749a
add edx, 2
add edi, 2
cmp edx, dword [esp + 0x3c]
jae 0x4174ab
mov al, byte [edi]
xor ebx, ebx
cmp al, byte [edx]
sete bl
add edx, ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x28]
sub edx, eax
jmp 0x4171df
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x28]
cmp edx, eax
jae 0x4174d1
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [edx]
sete cl
add edx, ecx
sub edx, dword [esp + 0x30]
jmp 0x417125
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x28], ecx
mov edi, dword [esp + 4]
cmp dword [esp + 0xc], 0
jle 0x417675
mov esi, eax
mov eax, ebx
sub eax, esi
cmp eax, 0xfffe
mov ecx, dword [esp + 0x90]
ja 0x41767c
mov edx, dword [esp + 0xa4]
mov ecx, dword [edx + 0x40000]
mov eax, dword [edx + 0x40004]
sub ecx, eax
mov ebp, dword [edx + 0x4000c]
mov dword [esp + 0x4c], ebp
add ecx, ebp
mov ebp, dword [esp + 0x84]
mov edx, dword [edx + ebp*4]
mov ebp, eax
mov dword [esp + 0x48], edx
add esi, edx
mov dword [esp + 4], ecx
sub esi, ecx
mov ecx, dword [esp + 0x90]
sub ebp, dword [esp + 0x4c]
mov eax, esi
mov dword [esp + 0x24], ebp
mov esi, ebx
mov dword [esp + 0x1c], eax
sub esi, eax
cmp esi, 0xffff
mov eax, dword [esp + 0x10]
ja 0x41767c
sub dword [esp + 0xc], 1
jb 0x41767c
mov edx, dword [esp + 0x48]
cmp dword [ebp + edx], eax
mov eax, edx
jne 0x417613
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 4]
sub edi, eax
add edi, dword [esp + 8]
mov ecx, eax
mov eax, dword [esp + 0x3c]
cmp edi, eax
cmova edi, eax
add ebp, ecx
add ebp, 4
lea eax, [edi - 3]
mov ebx, dword [esp + 0x30]
cmp eax, ebx
jbe 0x4175c5
mov ecx, dword [ebx]
xor ecx, dword [ebp]
je 0x4175be
bsf ebx, ecx
shr ebx, 3
jmp 0x4175e9
add ebp, 4
mov ebx, dword [esp + 0x44]
mov ecx, dword [esp + 0x50]
add ecx, ebx
cmp ebx, eax
jae 0x41763a
mov edx, dword [ebx]
xor edx, dword [ebp]
jne 0x4175e1
add ebx, 4
add ebp, 4
add ecx, 4
jmp 0x4175cb
bsf ebx, edx
shr ebx, 3
add ebx, ecx
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
add ebx, 4
cmp ebx, edi
mov eax, dword [esp + 0x28]
cmovg eax, esi
mov dword [esp + 0x28], eax
cmovg edi, ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x48]
mov esi, eax
movzx eax, si
mov edx, dword [esp + 0xa4]
movzx eax, word [edx + eax*2 + 0x20000]
sub esi, eax
mov dword [esp + 0x48], esi
mov edx, dword [esp + 0x1c]
sub edx, eax
mov eax, edx
jmp 0x417553
lea eax, [edi - 1]
cmp ebx, eax
jae 0x417650
movzx eax, word [ebp]
cmp ax, word [ebx]
jne 0x417650
add ebx, 2
add ebp, 2
cmp ebx, edi
jae 0x417660
mov al, byte [ebp]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
sub ebx, dword [esp + 0x30]
jmp 0x4175f8
mov ecx, dword [esp + 0x90]
cmp edi, 4
mov esi, dword [esp + 0x28]
jge 0x4176a9
mov edx, dword [esp + 8]
inc edx
dec dword [esp + 0x50]
inc dword [esp + 0x8c]
jmp 0x416ec9
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x28], ecx
mov edi, esi
jmp 0x4174e6
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x68], eax
mov edx, dword [esp + 0x58]
mov dword [esp + 0xb8], esi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x9c], edi
mov eax, dword [esp + 8]
mov dword [esp + 0x98], eax
mov ecx, dword [esp + 0x20]
mov ebx, eax
mov esi, ecx
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x14], ebx
add eax, ebx
mov dword [esp + 0x28], 0
mov edi, 0
mov dword [esp + 0x5c], eax
cmp eax, dword [esp + 0xe8]
ja 0x4181c2
mov edx, dword [esp + 0x5c]
lea eax, [edx - 2]
mov edi, dword [esp + 0x18]
mov ecx, dword [edi + 0x4001c]
mov dword [esp + 0xbc], ecx
mov ecx, dword [edi + 0x40004]
mov esi, dword [edi + 0x4000c]
mov dword [esp + 0x24], eax
sub eax, ecx
add eax, esi
mov dword [esp + 0x48], eax
mov eax, esi
neg eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], esi
sub ecx, esi
mov eax, dword [edi + 0x40008]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x40010]
mov dword [esp + 0x50], eax
mov eax, dword [edx - 2]
mov dword [esp + 0x34], eax
mov edx, dword [edi + 0x40014]
cmp edx, dword [esp + 0x48]
jae 0x4177b0
imul esi, dword [ecx + edx], 0x9e3779b1
shr esi, 0x11
mov edi, edx
mov eax, dword [esp + 0x18]
sub edi, dword [eax + esi*4]
mov ebx, 0xffff
cmp edi, ebx
jb 0x41779c
mov edi, 0xffff
and ebx, edx
mov eax, dword [esp + 0x18]
mov word [eax + ebx*2 + 0x20000], di
mov dword [eax + esi*4], edx
inc edx
jmp 0x417775
mov esi, dword [esp + 0x50]
lea ecx, [esi + 0x10000]
mov edx, dword [esp + 0x48]
lea eax, [edx - 0xffff]
cmp ecx, edx
cmova eax, esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x4c]
add eax, ecx
sub eax, esi
mov dword [esp + 0xcc], eax
mov ebp, dword [esp + 0x14]
mov eax, ebp
mov ebx, dword [esp + 0x24]
sub eax, ebx
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x18]
mov dword [eax + 0x40014], edx
mov eax, dword [esp + 0x34]
movzx esi, ax
mov edx, eax
shr edx, 0x10
xor edx, esi
movzx edi, al
mov esi, eax
shr esi, 0x18
xor esi, edi
mov edi, dword [esp + 0x6c]
lea eax, [edi + ebp]
add eax, 0xfffffffd
mov dword [esp + 0x10], eax
imul ecx, dword [eax + 1], 0x9e3779b1
shr ecx, 0x11
or esi, edx
lea esi, [ebp + edi]
sete byte [esp + 0xb0]
push 0xfffffffffffffffe
pop edx
sub edx, esi
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0xc]
add eax, edx
dec eax
mov dword [esp + 0x80], eax
mov esi, dword [esp + 0x4c]
lea eax, [edi + esi]
lea eax, [ebp + eax - 2]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x50]
not eax
add eax, dword [esp + 0x54]
mov dword [esp + 0xc4], eax
mov dword [esp + 0xd8], ecx
mov eax, dword [esp + 0x18]
mov ebp, dword [eax + ecx*4]
lea eax, [ebx - 4]
mov dword [esp + 0xc], eax
lea eax, [ebx + 4]
mov dword [esp + 0x20], eax
lea eax, [ebx + 8]
mov dword [esp + 0xa0], eax
lea eax, [esi - 4]
mov dword [esp + 0x88], eax
lea eax, [edx + 4]
mov dword [esp + 0x94], eax
mov dword [esp + 0x8c], 0
mov dword [esp + 0x84], ebx
mov dword [esp + 0x70], 0
mov dword [esp + 0x30], 0
mov ecx, dword [esp + 0xd0]
mov ebx, edi
mov edx, dword [esp + 0x2c]
cmp ebp, dword [esp + 8]
jb 0x417f79
test ecx, ecx
jle 0x417f79
mov edi, ebp
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x4c]
mov esi, eax
sub esi, ebp
mov dword [esp + 4], esi
jbe 0x417970
cmp edi, dword [esp + 0x88]
mov eax, dword [esp + 0x34]
ja 0x417b61
mov edx, edi
sub edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x28], edx
add edx, ecx
cmp dword [edx], eax
jne 0x4179e5
mov dword [esp + 0x44], ebx
mov eax, dword [esp + 0x24]
add esi, eax
mov eax, dword [esp + 0x3c]
cmp esi, eax
mov dword [esp + 0x64], esi
cmova esi, eax
lea ecx, [edx + 4]
mov dword [esp + 0x7c], esi
lea eax, [esi - 3]
mov ebx, dword [esp + 0x20]
cmp eax, ebx
jbe 0x4179f8
mov esi, dword [ebx]
xor esi, dword [ecx]
je 0x4179ee
bsf ebx, esi
shr ebx, 3
jmp 0x417a1f
mov ebp, edi
sub ebp, eax
mov eax, dword [esp + 0x40]
lea edx, [eax + ebp]
mov eax, dword [esp + 0x14]
movzx ecx, word [eax + ebx - 1]
mov eax, dword [esp + 0xa4]
lea esi, [edx + eax]
cmp cx, word [ebx + esi - 1]
jne 0x4179e5
mov eax, dword [esp + 0x34]
cmp dword [edx], eax
jne 0x4179e5
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x14]
je 0x417a68
mov dword [esp + 0x38], edi
neg ebp
mov eax, dword [esp + 0xa4]
cmp eax, ebp
cmovg ebp, eax
mov esi, ebp
neg esi
xor ecx, ecx
lea edi, [esi + ecx]
cmp edi, 3
jle 0x417c7a
mov edi, dword [edx + ecx - 4]
mov eax, dword [esp + 0xc]
xor edi, dword [eax + ecx]
jne 0x417cb0
add ecx, 0xfffffffc
jmp 0x4179c3
mov edx, dword [esp + 0x2c]
jmp 0x417b61
add ecx, 4
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0x58]
add esi, ebx
cmp ebx, eax
jae 0x417ecf
mov ebp, dword [ebx]
xor ebp, dword [ecx]
jne 0x417a17
add ebx, 4
add ecx, 4
add esi, 4
jmp 0x4179fe
bsf ebx, ebp
shr ebx, 3
add ebx, esi
lea ecx, [ebx + 4]
mov eax, dword [esp + 0x64]
cmp eax, dword [esp + 0x3c]
mov dword [esp + 0x38], edi
jae 0x417ab7
mov eax, dword [esp + 0x24]
add eax, ebx
add eax, 4
mov esi, dword [esp + 0x7c]
cmp eax, esi
jne 0x417ab7
mov eax, esi
mov edi, dword [esp + 0x40]
mov esi, edi
mov ebx, eax
cmp dword [esp], eax
jbe 0x417a79
mov esi, eax
mov eax, dword [eax]
xor eax, dword [edi]
je 0x417a6f
bsf ebx, eax
shr ebx, 3
mov edi, dword [esp + 0x38]
jmp 0x417ab5
xor ebp, ebp
jmp 0x417cda
lea ebx, [esi + 4]
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0x78]
mov edi, dword [esp + 0x38]
sub ebp, edi
mov eax, dword [esp + 0xc8]
cmp ebp, eax
cmovae ebp, eax
mov eax, ebx
sub eax, ebp
cmp ebx, dword [esp]
jae 0x417f3b
mov ebp, dword [ebx]
xor ebp, dword [esi]
jne 0x417aad
add ebx, 4
add esi, 4
add eax, 4
jmp 0x417a93
bsf ebx, ebp
shr ebx, 3
add ebx, eax
add ecx, ebx
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x14]
je 0x417af4
mov esi, dword [esp + 0x28]
neg esi
mov eax, dword [esp + 0xa4]
cmp eax, esi
cmovg esi, eax
mov edi, esi
neg esi
xor eax, eax
lea ebx, [esi + eax]
cmp ebx, 3
jle 0x417af8
mov ebx, dword [edx + eax - 4]
mov ebp, dword [esp + 0xc]
xor ebx, dword [ebp + eax]
jne 0x417b28
add eax, 0xfffffffc
jmp 0x417ad9
xor ebp, ebp
jmp 0x417b39
mov edx, edi
cmp edi, eax
mov ebp, eax
cmovl ebp, edi
mov edx, dword [esp + 0xc4]
mov esi, dword [esp + 0x38]
add esi, edx
cmp eax, edi
jle 0x417b35
lea ebx, [eax - 1]
mov edx, dword [esp + 0x10]
mov dl, byte [edx + eax]
cmp dl, byte [esi + eax]
mov eax, ebx
je 0x417b0e
inc ebx
mov ebp, ebx
jmp 0x417b35
bsr edx, ebx
xor edx, 0x18
shr edx, 3
sub eax, edx
mov ebp, eax
mov edi, dword [esp + 0x38]
sub ecx, ebp
mov ebx, dword [esp + 0x44]
cmp ecx, ebx
mov edx, dword [esp + 0x2c]
jle 0x417b61
mov eax, dword [esp + 0x48]
sub eax, edi
mov dword [esp + 0x8c], eax
add ebp, dword [esp + 0x24]
mov dword [esp + 0x84], ebp
mov ebx, ecx
mov ecx, dword [esp + 0x1c]
dec ecx
mov ebp, edi
movzx eax, di
mov esi, dword [esp + 0x18]
movzx edi, word [esi + eax*2 + 0x20000]
cmp dword [esp + 0xd0], 0x81
jl 0x417c70
cmp di, 1
jne 0x417c70
mov eax, dword [esp + 0x30]
test eax, eax
je 0x417bbb
cmp eax, 2
jne 0x417bb2
lea esi, [ebp - 1]
cmp esi, dword [esp + 8]
jb 0x417bb2
cmp dword [esp + 4], 3
jae 0x417bf8
push 2
pop eax
mov dword [esp + 0x30], eax
jmp 0x417c70
xor eax, eax
inc eax
mov dword [esp + 0x30], eax
cmp byte [esp + 0xb0], 0
je 0x417c70
mov esi, ecx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x3c]
push dword [esp + 0x34]
call fcn.004199cd
mov ecx, esi
mov edx, dword [esp + 0x30]
add esp, 4
add eax, 4
mov dword [esp + 0x70], eax
push 2
pop eax
jmp 0x417b9a
mov dword [esp + 0x44], ebx
mov dword [esp + 0x1c], ecx
mov eax, esi
sub eax, dword [esp + 0x50]
add eax, dword [esp + 0x54]
mov ecx, esi
mov ebx, dword [esp + 0x4c]
mov edx, ebx
sub ecx, ebx
mov ebx, dword [esp + 0x40]
lea ebx, [ebx + ecx]
cmovb ebx, eax
mov eax, dword [esp + 0x34]
cmp dword [ebx], eax
jne 0x417c5d
mov ebp, edx
cmp esi, edx
mov edi, dword [esp + 0x3c]
cmovb edi, dword [esp + 0xcc]
lea ecx, [ebx + 4]
mov edx, edi
push eax
call fcn.004199cd
pop ecx
lea edx, [eax + 4]
cmp esi, ebp
jae 0x417cc3
lea ecx, [ebx + edx]
cmp ecx, edi
je 0x417d3c
mov dword [esp + 0x38], edx
jmp 0x417d60
push 2
pop eax
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
movzx eax, di
sub ebp, eax
jmp 0x4178df
mov edi, ebx
cmp ebp, ecx
mov eax, ecx
cmovl eax, ebp
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x38]
add esi, eax
cmp ecx, ebp
jle 0x417cd0
lea ebx, [ecx - 1]
mov eax, dword [esp + 0x10]
mov al, byte [eax + ecx]
cmp al, byte [esi + ecx]
mov ecx, ebx
je 0x417c94
inc ebx
mov ebp, ebx
mov ebx, edi
jmp 0x417cbd
bsr eax, edi
xor eax, 0x18
shr eax, 3
sub ecx, eax
mov ebp, ecx
mov edi, dword [esp + 0x38]
jmp 0x417cda
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x40]
jmp 0x417d64
mov ebx, edi
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x28]
add edx, 4
mov ecx, dword [esp + 0x20]
cmp dword [esp], ecx
jbe 0x417cfe
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x417cf4
bsf ecx, eax
shr ecx, 3
jmp 0x417d26
add edx, 4
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x58]
add eax, ecx
cmp ecx, dword [esp]
jae 0x417f04
mov esi, dword [ecx]
xor esi, dword [edx]
jne 0x417d1e
add ecx, 4
add edx, 4
add eax, 4
jmp 0x417d04
bsf ecx, esi
shr ecx, 3
add ecx, eax
mov edx, dword [esp + 0x2c]
sub ecx, ebp
add ecx, 4
cmp ecx, ebx
jg 0x417b47
jmp 0x417b61
shl eax, 3
mov edi, dword [esp + 0x34]
mov ecx, eax
mov eax, edi
rol eax, cl
mov ecx, dword [esp + 0x40]
mov edi, edx
mov edx, dword [esp + 0x3c]
push eax
call fcn.004199cd
pop ecx
add edi, eax
mov dword [esp + 0x38], edi
mov edx, dword [esp + 0x54]
mov ecx, ebx
push dword [esp + 0x34]
call fcn.00419a04
pop ecx
mov edi, eax
mov ecx, dword [esp + 0x4c]
cmp esi, ecx
jae 0x417d88
mov ebp, dword [esp + 8]
mov edx, dword [esp + 0x70]
mov ebx, dword [esp + 0x44]
jmp 0x417dd1
sub ebx, edi
cmp ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x70]
jne 0x417e73
cmp dword [esp + 0x50], ecx
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x44]
jae 0x417dd1
mov ecx, edi
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x34]
rol eax, cl
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0x54]
push eax
call fcn.00419a04
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x50]
add esp, 4
add edi, eax
mov eax, esi
sub eax, edi
cmp eax, ebp
cmovbe eax, ebp
mov edi, esi
sub edi, eax
mov ebp, dword [esp + 0x38]
add edi, ebp
cmp ebp, edx
ja 0x417e14
cmp edi, edx
jb 0x417e14
sub esi, edx
mov ebp, dword [esp + 0x38]
add ebp, esi
mov eax, ebp
not eax
add eax, ecx
cmp eax, 3
cmovb ebp, ecx
push 2
pop eax
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
jmp 0x4178df
mov ebp, ecx
mov ecx, eax
not ecx
add ecx, ebp
push 2
pop edx
mov dword [esp + 0x30], edx
cmp ecx, 3
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
jb 0x4178df
push 2
pop ecx
mov dword [esp + 0x30], ecx
mov ebp, eax
mov ecx, dword [esp + 0x24]
cmp ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
jne 0x4178df
mov esi, dword [esp + 0x70]
cmp edi, esi
cmovae edi, esi
cmp ebx, edi
jae 0x417e7c
mov ebx, dword [esp + 0x48]
sub ebx, eax
mov esi, dword [esp + 0x14]
cmp ebx, 0xffff
jbe 0x417e8e
jmp 0x41820c
mov ebp, dword [esp + 8]
jmp 0x417d82
mov ebp, ebx
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x8c]
mov edi, ebp
movzx ecx, ax
mov edx, dword [esp + 0x18]
movzx ecx, word [edx + ecx*2 + 0x20000]
mov dword [esp + 0x84], esi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x8c], ebx
push 2
pop edx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x2c]
mov ebx, edi
sub eax, ecx
mov ecx, dword [esp + 0x1c]
mov ebp, eax
jae 0x4178df
jmp 0x417f8d
mov eax, dword [esp + 0x7c]
dec eax
cmp ebx, eax
jae 0x417ee6
movzx eax, word [ecx]
cmp ax, word [ebx]
jne 0x417ee6
add ebx, 2
add ecx, 2
mov eax, dword [esp + 0x7c]
cmp ebx, eax
jae 0x417ef9
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov eax, dword [esp + 0x20]
sub ebx, eax
jmp 0x417a1f
cmp ecx, dword [esp + 0xd4]
jae 0x417f1b
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x417f1b
add ecx, 2
add edx, 2
cmp ecx, dword [esp + 0x3c]
jae 0x417f2c
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
sub ecx, eax
jmp 0x417d2a
cmp ebx, dword [esp + 0xd4]
jae 0x417f52
movzx eax, word [esi]
cmp ax, word [ebx]
jne 0x417f52
add ebx, 2
add esi, 2
cmp ebx, dword [esp + 0x3c]
jae 0x417f6e
mov al, byte [esi]
mov byte [esp + 0x64], al
mov al, byte [esp + 0x64]
cmp al, byte [ebx]
mov eax, 0
sete al
add ebx, eax
mov eax, dword [esp + 0x7c]
sub ebx, eax
jmp 0x417ab5
mov esi, dword [esp + 0x84]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x28], eax
mov edi, ebx
test ecx, ecx
jle 0x4181c2
mov eax, dword [esp + 0x48]
sub eax, dword [esp + 8]
cmp eax, 0xfffe
ja 0x4181c2
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xbc]
mov ebp, dword [ecx + 0x40000]
mov eax, dword [ecx + 0x40004]
mov dword [esp + 0x50], eax
sub ebp, eax
mov eax, dword [ecx + 0x4000c]
mov dword [esp + 0x4c], eax
add ebp, eax
mov ebx, dword [esp + 0xd8]
mov eax, dword [ecx + ebx*4]
mov ebx, dword [esp + 8]
mov ecx, eax
mov dword [esp + 0x30], eax
add ebx, eax
mov dword [esp + 0x54], ebp
sub ebx, ebp
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x40], eax
dec eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x48]
sub eax, ebx
mov dword [esp + 0x38], eax
cmp eax, 0xffff
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
ja 0x4181c2
sub ecx, 1
jb 0x4181c2
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x4c], edi
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x40]
cmp dword [edi + ecx], eax
mov eax, ecx
mov dword [esp + 8], esi
jne 0x418168
mov esi, edi
mov edi, dword [esp + 0x54]
sub edi, eax
add edi, dword [esp + 0x24]
mov ecx, eax
mov eax, dword [esp + 0x3c]
cmp edi, eax
cmova edi, eax
lea eax, [esi + ecx]
mov dword [esp + 4], eax
add eax, 4
lea esi, [edi - 3]
mov ecx, dword [esp + 0x20]
cmp esi, ecx
jbe 0x418087
mov ecx, dword [ecx]
xor ecx, dword [eax]
je 0x41807d
bsf ecx, ecx
shr ecx, 3
jmp 0x4180b2
add eax, 4
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x58]
add edx, ecx
cmp ecx, esi
jae 0x418191
mov ebp, dword [ecx]
xor ebp, dword [eax]
jne 0x4180a6
add ecx, 4
add eax, 4
add edx, 4
jmp 0x41808d
bsf ecx, ebp
shr ecx, 3
add ecx, edx
mov edx, dword [esp + 0x2c]
add ecx, 4
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x14]
je 0x4180f8
mov esi, dword [esp + 0x50]
sub esi, dword [esp + 4]
mov eax, dword [esp + 0xa4]
cmp eax, esi
cmovg esi, eax
mov edx, esi
neg edx
xor eax, eax
lea edi, [edx + eax]
cmp edi, 3
jle 0x4180fc
mov edi, dword [esp + 4]
mov edi, dword [edi + eax - 4]
mov ebp, dword [esp + 0xc]
xor edi, dword [ebp + eax]
jne 0x41812d
add eax, 0xfffffffc
jmp 0x4180d9
xor ebp, ebp
jmp 0x418148
cmp esi, eax
mov edx, eax
cmovl edx, esi
mov dword [esp + 4], edx
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x44]
add edx, edi
cmp eax, esi
jle 0x418140
lea ebp, [eax - 1]
mov edi, ebx
mov ebx, dword [esp + 0x10]
mov bl, byte [ebx + eax]
cmp bl, byte [edx + eax]
mov ebx, edi
mov eax, ebp
je 0x418111
inc ebp
jmp 0x41813a
bsr edx, edi
xor edx, 0x18
shr edx, 3
sub eax, edx
mov ebp, eax
mov edx, dword [esp + 0x2c]
jmp 0x418148
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 4]
sub ecx, ebp
cmp ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x30]
jle 0x418168
add ebp, dword [esp + 0x24]
mov dword [esp + 8], ebp
mov esi, dword [esp + 0x38]
mov dword [esp + 0x28], esi
mov dword [esp + 0x4c], ecx
mov esi, eax
movzx eax, si
mov ecx, dword [esp + 0xbc]
movzx eax, word [ecx + eax*2 + 0x20000]
sub esi, eax
mov dword [esp + 0x30], esi
sub ebx, eax
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x4c]
jmp 0x417ffe
lea edx, [edi - 1]
cmp ecx, edx
jae 0x4181a6
movzx edx, word [eax]
cmp dx, word [ecx]
jne 0x4181a6
add ecx, 2
add eax, 2
cmp ecx, edi
jae 0x4181b5
mov al, byte [eax]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0x2c]
sub ecx, dword [esp + 0x20]
jmp 0x4180b2
mov dword [esp + 8], esi
cmp edi, dword [esp + 0x6c]
jle 0x4190f3
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x98]
cmp ebx, edi
setb cl
mov eax, dword [esp + 0x9c]
add eax, edi
mov esi, dword [esp + 8]
cmp esi, eax
setb al
and al, cl
cmovne edi, ebx
mov ecx, esi
sub ecx, edi
mov ebx, esi
cmp ecx, 3
jl 0x4176de
jmp 0x418227
mov esi, dword [esp + 0x84]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x44]
jmp 0x417f8d
mov dword [esp + 0x78], edi
test al, al
mov eax, dword [esp + 0x74]
cmovne eax, dword [esp + 0xb8]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x6c]
cmovne eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0xb4], ecx
mov esi, dword [esp + 0x28]
mov dword [esp + 0x2c], edx
cmp eax, 0x12
mov ecx, eax
push 0x12
pop edx
cmovl edx, eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xec], edx
lea edx, [eax + edx]
mov dword [esp + 0xe4], edx
lea edx, [eax + ecx]
mov dword [esp + 0x6c], ecx
lea eax, [eax + ecx + 3]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xa8]
mov dword [esp + 8], ecx
mov dword [esp + 0x68], edx
mov edi, dword [esp + 0x4c]
mov dword [esp + 0xb8], esi
mov ecx, eax
mov esi, dword [esp + 0x78]
sub ecx, esi
cmp ecx, 0x11
jg 0x4182ea
lea edx, [eax + edi]
add edx, 0xfffffffc
cmp dword [esp + 0xe4], edx
lea edx, [ecx + edi - 4]
cmovbe edx, dword [esp + 0xec]
mov ecx, esi
sub ecx, eax
add ecx, edx
test ecx, ecx
jle 0x4182e0
add eax, ecx
sub edi, ecx
mov ecx, eax
mov eax, edi
mov edx, dword [esp + 0x68]
jmp 0x4182ee
mov ecx, eax
mov eax, edi
mov dword [esp + 0x9c], eax
add eax, ecx
xor esi, esi
mov edi, 0
mov dword [esp + 0x5c], eax
cmp eax, dword [esp + 0xe8]
mov dword [esp + 0x20], ecx
ja 0x418d97
mov edx, dword [esp + 0x5c]
lea eax, [edx - 3]
mov edi, dword [esp + 0x18]
mov ecx, dword [edi + 0x4001c]
mov dword [esp + 0xbc], ecx
mov ecx, dword [edi + 0x40004]
mov esi, dword [edi + 0x4000c]
mov dword [esp + 0x24], eax
sub eax, ecx
add eax, esi
mov dword [esp + 4], eax
mov eax, esi
neg esi
mov dword [esp + 0xc], esi
mov dword [esp + 0x28], ecx
sub ecx, eax
mov esi, dword [edi + 0x40008]
mov dword [esp + 0x54], esi
mov esi, dword [edi + 0x40010]
mov dword [esp + 0x50], esi
mov edx, dword [edx - 3]
mov dword [esp + 0x34], edx
mov edx, dword [edi + 0x40014]
cmp edx, dword [esp + 4]
jae 0x4183ae
imul esi, dword [ecx + edx], 0x9e3779b1
shr esi, 0x11
mov edi, edx
mov ebx, dword [esp + 0x18]
sub edi, dword [ebx + esi*4]
mov ebx, 0xffff
cmp edi, ebx
jb 0x418399
mov edi, 0xffff
and ebx, edx
mov ebp, dword [esp + 0x18]
mov word [ebp + ebx*2 + 0x20000], di
mov dword [ebp + esi*4], edx
inc edx
jmp 0x418372
mov edi, dword [esp + 0x50]
lea ecx, [edi + 0x10000]
mov edx, dword [esp + 4]
lea esi, [edx - 0xffff]
cmp ecx, edx
cmova esi, edi
mov dword [esp + 0x40], esi
mov ecx, dword [esp + 0x54]
add ecx, eax
sub ecx, edi
mov dword [esp + 0xcc], ecx
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x30], eax
mov eax, ebp
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x40014], edx
mov ebx, dword [esp + 0x34]
movzx ecx, bx
mov edx, ebx
shr edx, 0x10
xor edx, ecx
movzx ecx, bl
mov esi, ebx
shr esi, 0x18
xor esi, ecx
mov edi, dword [esp + 0x9c]
lea ebx, [edi + ebp]
add ebx, 0xfffffffc
mov dword [esp + 0x10], ebx
imul ecx, dword [ebx + 1], 0x9e3779b1
mov ebx, dword [esp + 0x24]
sub eax, ebx
mov dword [esp + 0xa4], eax
shr ecx, 0x11
or esi, edx
lea eax, [ebp + edi]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0xc]
lea esi, [edx + esi - 1]
mov dword [esp + 0x98], esi
not eax
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0x30]
lea eax, [edi + esi]
lea eax, [ebp + eax - 3]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x50]
not eax
sete byte [esp + 0xb0]
add eax, dword [esp + 0x54]
mov dword [esp + 0xc4], eax
mov dword [esp + 0xa8], ecx
mov eax, dword [esp + 0x18]
mov ebp, dword [eax + ecx*4]
lea eax, [ebx - 4]
mov dword [esp + 0xc], eax
lea eax, [ebx + 4]
mov dword [esp + 0x44], eax
lea eax, [ebx + 8]
mov dword [esp + 0xa0], eax
mov eax, esi
lea eax, [esi - 4]
mov dword [esp + 0x88], eax
lea eax, [edx + 4]
mov dword [esp + 0x80], eax
mov dword [esp + 0x8c], 0
mov dword [esp + 0x84], ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x70], 0
mov dword [esp + 0x38], 0
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x48], eax
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0x68]
cmp ebp, ebx
jb 0x418b58
cmp dword [esp + 0x48], 0
jle 0x418b58
mov edi, ebp
mov eax, dword [esp + 0x30]
mov ecx, eax
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], ebp
jbe 0x41857f
cmp edi, dword [esp + 0x88]
mov eax, dword [esp + 0x34]
ja 0x41877a
sub edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
lea edx, [ecx + edi]
cmp dword [edx], eax
jne 0x4185f4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x4c]
lea esi, [eax + ecx]
mov eax, dword [esp + 0x3c]
cmp esi, eax
mov dword [esp + 0x64], esi
cmova esi, eax
mov dword [esp + 8], edx
lea ecx, [edx + 4]
mov dword [esp + 0x7c], esi
lea eax, [esi - 3]
mov edx, dword [esp + 0x44]
cmp eax, edx
jbe 0x418b31
mov esi, dword [edx]
xor esi, dword [ecx]
je 0x418601
bsf ebx, esi
shr ebx, 3
jmp 0x418632
mov ebp, edi
sub ebp, eax
mov eax, dword [esp + 0x28]
lea edx, [eax + ebp]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
movzx ecx, word [eax + edi - 1]
mov eax, dword [esp + 0xa4]
lea esi, [edx + eax]
cmp cx, word [edi + esi - 1]
jne 0x4185f4
mov eax, dword [esp + 0x34]
cmp dword [edx], eax
jne 0x4185f4
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x20]
je 0x418679
neg ebp
mov eax, dword [esp + 0xa4]
cmp eax, ebp
cmovg ebp, eax
mov esi, ebp
neg esi
xor ecx, ecx
lea edi, [esi + ecx]
cmp edi, 3
jle 0x418896
mov edi, dword [edx + ecx - 4]
mov eax, dword [esp + 0xc]
xor edi, dword [eax + ecx]
jne 0x4188d1
add ecx, 0xfffffffc
jmp 0x4185d2
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x1c]
jmp 0x41877a
add ecx, 4
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0x58]
add esi, ebx
cmp ebx, eax
jae 0x418a89
mov ebp, dword [ebx]
xor ebp, dword [ecx]
jne 0x41862a
add ebx, 4
add ecx, 4
add esi, 4
jmp 0x418611
bsf ebx, ebp
shr ebx, 3
add ebx, esi
mov eax, dword [esp + 0x64]
lea ecx, [ebx + 4]
cmp eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
jae 0x418673
mov eax, dword [esp + 0x24]
add eax, ebx
add eax, 4
mov esi, dword [esp + 0x7c]
cmp eax, esi
jne 0x418673
mov eax, esi
mov esi, edx
mov ebx, eax
cmp dword [esp], eax
jbe 0x41868a
mov esi, eax
mov eax, dword [eax]
xor eax, dword [edx]
je 0x418680
bsf ebx, eax
shr ebx, 3
mov edx, dword [esp + 0x14]
jmp 0x4186cb
mov edx, dword [esp + 0x14]
jmp 0x4186cd
xor ebp, ebp
jmp 0x4188de
lea ebx, [esi + 4]
mov esi, dword [esp + 0x80]
mov ebp, dword [esp + 0x94]
sub ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0xc8]
cmp ebp, eax
cmovae ebp, eax
mov eax, ebx
sub eax, ebp
mov edx, dword [esp + 0x14]
cmp ebx, dword [esp]
jae 0x418abe
mov ebp, dword [ebx]
xor ebp, dword [esi]
jne 0x4186c3
add ebx, 4
add esi, 4
add eax, 4
jmp 0x4186a9
bsf ebx, ebp
shr ebx, 3
add ebx, eax
add ecx, ebx
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x20]
je 0x418709
neg edi
mov eax, dword [esp + 0xa4]
cmp eax, edi
cmovg edi, eax
mov esi, edi
neg esi
xor eax, eax
lea ebx, [esi + eax]
cmp ebx, 3
jle 0x41870d
mov edx, dword [esp + 8]
mov ebx, dword [edx + eax - 4]
mov edx, dword [esp + 0xc]
xor ebx, dword [edx + eax]
jne 0x41873b
add eax, 0xfffffffc
jmp 0x4186eb
xor ebp, ebp
jmp 0x41874c
cmp edi, eax
mov ebp, eax
cmovl ebp, edi
mov edx, dword [esp + 0xc4]
mov esi, dword [esp + 0x1c]
add esi, edx
cmp eax, edi
jle 0x418748
lea ebx, [eax - 1]
mov edx, dword [esp + 0x10]
mov dl, byte [edx + eax]
cmp dl, byte [esi + eax]
mov eax, ebx
je 0x418721
inc ebx
mov ebp, ebx
jmp 0x418748
bsr edx, ebx
xor edx, 0x18
shr edx, 3
sub eax, edx
mov ebp, eax
mov edx, dword [esp + 0x14]
sub ecx, ebp
cmp ecx, edx
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x1c]
jle 0x41877a
mov eax, dword [esp + 4]
sub eax, edi
mov dword [esp + 0x8c], eax
add ebp, dword [esp + 0x24]
mov dword [esp + 0x84], ebp
mov dword [esp + 0x14], ecx
dec dword [esp + 0x48]
movzx eax, di
mov ecx, dword [esp + 0x18]
movzx edi, word [ecx + eax*2 + 0x20000]
cmp dword [esp + 0xd0], 0x81
jl 0x4187ff
cmp di, 1
jne 0x4187ff
mov ecx, dword [esp + 0x38]
test ecx, ecx
jne 0x4187db
xor eax, eax
inc eax
mov dword [esp + 0x38], eax
cmp byte [esp + 0xb0], 0
je 0x4187ff
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
push dword [esp + 0x34]
call fcn.004199cd
mov edx, dword [esp + 0x6c]
add esp, 4
add eax, 4
mov dword [esp + 0x70], eax
push 2
pop ecx
cmp ecx, 2
jne 0x4187fb
mov eax, dword [esp + 0x1c]
lea esi, [eax - 1]
cmp esi, ebx
jb 0x4187fb
cmp dword [esp + 0x4c], 3
jae 0x41880d
push 2
pop eax
mov dword [esp + 0x38], eax
jmp 0x4187ff
mov dword [esp + 0x38], ecx
movzx eax, di
mov ebp, dword [esp + 0x1c]
sub ebp, eax
jmp 0x4184ed
mov eax, esi
sub eax, dword [esp + 0x50]
add eax, dword [esp + 0x54]
mov ecx, esi
mov ebp, dword [esp + 0x30]
sub ecx, ebp
mov ebx, dword [esp + 0x28]
lea ebx, [ebx + ecx]
cmovb ebx, eax
mov eax, dword [esp + 0x34]
cmp dword [ebx], eax
jne 0x418886
cmp esi, ebp
mov edi, dword [esp + 0x3c]
cmovb edi, dword [esp + 0xcc]
lea ecx, [ebx + 4]
mov edx, edi
push eax
call fcn.004199cd
pop ecx
mov ecx, ebp
lea ebp, [eax + 4]
cmp esi, ecx
jae 0x418946
lea ecx, [ebx + ebp]
cmp ecx, edi
jne 0x41887d
shl eax, 3
mov edx, dword [esp + 0x34]
mov ecx, eax
rol edx, cl
mov eax, edx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
push eax
call fcn.004199cd
pop ecx
add ebp, eax
mov edx, dword [esp + 0x54]
jmp 0x41894a
push 2
pop eax
mov dword [esp + 0x38], eax
mov ebx, dword [esp + 0x40]
jmp 0x4187ff
cmp ebp, ecx
mov eax, ecx
cmovl eax, ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x98]
mov edi, dword [esp + 0x1c]
lea esi, [eax + edi]
cmp ecx, ebp
jle 0x4189a9
lea ebx, [ecx - 1]
mov eax, dword [esp + 0x10]
mov al, byte [eax + ecx]
cmp al, byte [esi + ecx]
mov ecx, ebx
je 0x4188af
inc ebx
mov ebp, ebx
mov ebx, dword [esp + 0x40]
jmp 0x4188e2
bsr eax, edi
xor eax, 0x18
shr eax, 3
sub ecx, eax
mov ebp, ecx
mov edi, dword [esp + 0x1c]
add edx, 4
mov ecx, dword [esp + 0x44]
cmp dword [esp], ecx
jbe 0x418906
mov eax, dword [ecx]
xor eax, dword [edx]
je 0x4188fc
bsf ecx, eax
shr ecx, 3
jmp 0x41892e
add edx, 4
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x58]
add eax, ecx
cmp ecx, dword [esp]
jae 0x418afc
mov esi, dword [ecx]
xor esi, dword [edx]
jne 0x418926
add ecx, 4
add edx, 4
add eax, 4
jmp 0x41890c
bsf ecx, esi
shr ecx, 3
add ecx, eax
mov edx, dword [esp + 0x68]
sub ecx, ebp
add ecx, 4
cmp ecx, dword [esp + 0x14]
jg 0x41875e
jmp 0x41877a
mov edx, dword [esp + 0x28]
mov ecx, ebx
push dword [esp + 0x34]
call fcn.00419a04
pop ecx
mov edi, eax
mov eax, dword [esp + 0x30]
cmp esi, eax
jae 0x41896a
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x70]
jmp 0x4189ba
sub ebx, edi
cmp ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x70]
jne 0x4189b6
cmp dword [esp + 0x50], eax
mov ebx, dword [esp + 0x40]
jae 0x4189ba
mov ecx, edi
neg ecx
shl ecx, 3
mov eax, dword [esp + 0x34]
rol eax, cl
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0x54]
push eax
call fcn.00419a04
mov ecx, dword [esp + 0x74]
add esp, 4
add edi, eax
jmp 0x4189ba
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 8]
jmp 0x4188e2
mov ebx, dword [esp + 0x40]
mov eax, esi
sub eax, edi
cmp eax, ebx
cmovbe eax, ebx
mov edi, esi
sub edi, eax
mov edx, ebp
add edi, ebp
cmp ebp, ecx
ja 0x4189d7
cmp edi, ecx
jae 0x418b38
mov ecx, eax
not ecx
mov esi, dword [esp + 0x30]
add ecx, esi
push 2
pop edx
mov dword [esp + 0x38], edx
mov ebp, esi
cmp ecx, 3
mov edx, dword [esp + 0x68]
jb 0x4184ed
push 2
pop ecx
mov dword [esp + 0x38], ecx
mov ebp, eax
mov ecx, dword [esp + 0x24]
cmp ecx, dword [esp + 0x20]
jne 0x4184ed
mov ecx, dword [esp + 0x70]
cmp edi, ecx
cmovae edi, ecx
mov ecx, dword [esp + 0x14]
cmp ecx, edi
jae 0x418a36
mov ebx, dword [esp + 4]
sub ebx, eax
mov esi, dword [esp + 0x20]
cmp ebx, 0xffff
jbe 0x418a46
jmp 0x418dcc
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x8c]
mov edi, ecx
movzx ecx, ax
mov edx, dword [esp + 0x18]
movzx ecx, word [edx + ecx*2 + 0x20000]
mov dword [esp + 0x84], esi
mov dword [esp + 0x8c], ebx
push 2
pop edx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x14], edi
sub eax, ecx
mov ecx, esi
mov ebp, eax
mov esi, ebx
mov ebx, dword [esp + 0x40]
jae 0x4184ed
jmp 0x418b6a
mov eax, dword [esp + 0x7c]
dec eax
cmp ebx, eax
jae 0x418aa0
movzx eax, word [ecx]
cmp ax, word [ebx]
jne 0x418aa0
add ebx, 2
add ecx, 2
mov eax, dword [esp + 0x7c]
cmp ebx, eax
jae 0x418ab3
mov al, byte [ecx]
xor ecx, ecx
cmp al, byte [ebx]
sete cl
add ebx, ecx
mov eax, dword [esp + 0x64]
sub ebx, edx
jmp 0x418636
cmp ebx, dword [esp + 0xd4]
jae 0x418ad5
movzx eax, word [esi]
cmp ax, word [ebx]
jne 0x418ad5
add ebx, 2
add esi, 2
cmp ebx, dword [esp + 0x3c]
jae 0x418af1
mov al, byte [esi]
mov byte [esp + 0x64], al
mov al, byte [esp + 0x64]
cmp al, byte [ebx]
mov eax, 0
sete al
add ebx, eax
mov eax, dword [esp + 0x7c]
sub ebx, eax
jmp 0x4186cb
cmp ecx, dword [esp + 0xd4]
jae 0x418b13
movzx eax, word [edx]
cmp ax, word [ecx]
jne 0x418b13
add ecx, 2
add edx, 2
cmp ecx, dword [esp + 0x3c]
jae 0x418b24
mov al, byte [edx]
xor edx, edx
cmp al, byte [ecx]
sete dl
add ecx, edx
mov edx, dword [esp + 0x68]
sub ecx, dword [esp + 0x44]
jmp 0x418932
mov ebx, edx
jmp 0x41860b
sub esi, ecx
add ebp, esi
mov eax, ebp
not eax
mov ecx, dword [esp + 0x30]
add eax, ecx
cmp eax, 3
cmovb ebp, ecx
push 2
pop eax
mov dword [esp + 0x38], eax
jmp 0x4184e9
mov ecx, dword [esp + 0x84]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0x14]
mov dword [esp + 8], ecx
cmp dword [esp + 0x48], 0
jle 0x418d93
mov eax, dword [esp + 4]
sub eax, ebx
cmp eax, 0xfffe
mov ecx, dword [esp + 0x20]
ja 0x418d97
mov ebx, dword [esp + 0xbc]
mov ebp, dword [ebx + 0x40000]
mov eax, dword [ebx + 0x40004]
sub ebp, eax
mov ecx, dword [ebx + 0x4000c]
mov dword [esp + 0x1c], ecx
add ebp, ecx
mov ecx, dword [esp + 0xa8]
mov ecx, dword [ebx + ecx*4]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x40]
add ebx, dword [esp + 0x14]
mov dword [esp + 0x54], ebp
sub ebx, ebp
mov dword [esp + 0x50], eax
sub eax, dword [esp + 0x1c]
mov dword [esp + 0x38], eax
dec eax
mov dword [esp + 0x88], eax
mov eax, dword [esp + 4]
sub eax, ebx
mov dword [esp + 0x30], eax
cmp eax, 0xffff
mov eax, dword [esp + 0x34]
ja 0x418d93
sub dword [esp + 0x48], 1
jb 0x418d93
mov dword [esp + 0x40], ebx
mov dword [esp + 0x4c], edi
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x38]
cmp dword [ebx + ecx], eax
jne 0x418d2f
mov dword [esp + 0x28], esi
mov edi, dword [esp + 0x54]
sub edi, ecx
add edi, dword [esp + 0x24]
mov eax, dword [esp + 0x3c]
cmp edi, eax
cmova edi, eax
lea eax, [ebx + ecx]
mov dword [esp + 0x1c], eax
add eax, 4
lea esi, [edi - 3]
mov ebx, dword [esp + 0x44]
cmp esi, ebx
jbe 0x418c60
mov edx, dword [ebx]
xor edx, dword [eax]
je 0x418c56
bsf ebx, edx
shr ebx, 3
jmp 0x418c87
add eax, 4
mov ebx, dword [esp + 0xa0]
mov edx, dword [esp + 0x58]
add edx, ebx
cmp ebx, esi
jae 0x418d5a
mov ebp, dword [ebx]
xor ebp, dword [eax]
jne 0x418c7f
add ebx, 4
add eax, 4
add edx, 4
jmp 0x418c66
bsf ebx, ebp
shr ebx, 3
add ebx, edx
mov esi, dword [esp + 0x28]
add ebx, 4
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x24], eax
je 0x418cd0
mov esi, dword [esp + 0x50]
sub esi, dword [esp + 0x1c]
mov eax, dword [esp + 0xa4]
cmp eax, esi
cmovg esi, eax
mov edx, esi
neg edx
xor eax, eax
lea edi, [edx + eax]
cmp edi, 3
jle 0x418cd4
mov ecx, dword [esp + 0x1c]
mov edi, dword [ecx + eax - 4]
mov ecx, dword [esp + 0xc]
xor edi, dword [ecx + eax]
jne 0x418d02
add eax, 0xfffffffc
jmp 0x418cb2
xor edi, edi
jmp 0x418d13
cmp esi, eax
mov edi, eax
cmovl edi, esi
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x88]
add edx, ecx
cmp eax, esi
jle 0x418d0f
lea ebp, [eax - 1]
mov ecx, dword [esp + 0x10]
mov cl, byte [ecx + eax]
cmp cl, byte [edx + eax]
mov eax, ebp
je 0x418ce8
inc ebp
mov edi, ebp
jmp 0x418d0f
bsr edx, edi
xor edx, 0x18
shr edx, 3
sub eax, edx
mov edi, eax
mov esi, dword [esp + 0x28]
sub ebx, edi
cmp ebx, dword [esp + 0x4c]
mov edx, dword [esp + 0x68]
jle 0x418d2f
add edi, dword [esp + 0x24]
mov dword [esp + 8], edi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x4c], ebx
mov ecx, dword [esp + 0x14]
movzx eax, cx
mov edi, dword [esp + 0xbc]
movzx eax, word [edi + eax*2 + 0x20000]
sub ecx, eax
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x40]
sub ebx, eax
mov edi, dword [esp + 0x4c]
jmp 0x418bdf
lea edx, [edi - 1]
cmp ebx, edx
jae 0x418d75
movzx edx, word [eax]
cmp dx, word [ebx]
mov esi, dword [esp + 0x28]
jne 0x418d79
add ebx, 2
add eax, 2
jmp 0x418d79
mov esi, dword [esp + 0x28]
cmp ebx, edi
jae 0x418d88
mov al, byte [eax]
xor edx, edx
cmp al, byte [ebx]
sete dl
add ebx, edx
mov eax, dword [esp + 0x44]
sub ebx, eax
jmp 0x418c8b
mov ecx, dword [esp + 0x20]
cmp edi, dword [esp + 0x9c]
mov eax, dword [esp + 0x6c]
jle 0x419152
mov dword [esp + 0x28], esi
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0xd8]
jae 0x418de7
mov eax, esi
cmp esi, edx
mov esi, dword [esp + 0x28]
jb 0x4182a5
jmp 0x418f81
mov ecx, dword [esp + 0x84]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x40]
jmp 0x418b6a
cmp ecx, edx
mov dword [esp + 0x4c], edi
jae 0x418e44
mov eax, ecx
mov ebx, dword [esp + 0x78]
sub eax, ebx
cmp eax, 0x11
jg 0x418e4c
mov edx, dword [esp + 0x9c]
mov esi, ebx
mov ecx, dword [esp + 0x20]
add ecx, edx
add ecx, 0xfffffffc
cmp dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0x20]
lea eax, [edx + eax - 4]
mov ebx, dword [esp + 0xec]
cmova ebx, eax
mov eax, esi
sub eax, ecx
mov edi, ebx
add eax, ebx
test eax, eax
jle 0x418e46
add ecx, eax
mov dword [esp + 0x20], ecx
sub edx, eax
mov dword [esp + 0x9c], edx
jmp 0x418e46
mov edi, eax
mov ebx, dword [esp + 0x78]
jmp 0x418e4e
mov edi, eax
mov esi, dword [esp + 0xb4]
sub ebx, esi
mov eax, ebx
xor edx, edx
mov ecx, 0xff
div ecx
cmp dword [esp + 0x60], 0
mov edx, dword [esp + 0x2c]
je 0x418e81
add eax, edx
add eax, ebx
add eax, 9
cmp eax, dword [esp + 0xac]
ja 0x4195b9
cmp ebx, 0xf
jb 0x418ea4
lea ecx, [ebx - 0xf]
mov byte [edx], 0xf0
lea eax, [edx + 2]
cmp ecx, 0xff
jb 0x418eb0
mov byte [eax - 1], 0xff
add ecx, 0xffffff01
inc eax
jmp 0x418e8f
lea eax, [edx + 1]
mov ecx, ebx
shl cl, 4
mov byte [edx], cl
jmp 0x418eb3
mov byte [eax - 1], cl
add ebx, eax
mov ecx, esi
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
add ecx, 8
cmp eax, ebx
jb 0x418eb7
lea eax, [edi - 4]
mov ebp, eax
xor edx, edx
mov ecx, 0xff
div ecx
mov ecx, dword [esp + 0x74]
mov word [ebx], cx
cmp dword [esp + 0x60], 0
je 0x418ef7
add eax, ebx
add eax, 8
cmp eax, dword [esp + 0xac]
ja 0x4195d8
add ebx, 2
mov ecx, dword [esp + 0x2c]
mov al, byte [ecx]
cmp ebp, 0xf
jb 0x418f29
add al, 0xf
mov byte [ecx], al
lea eax, [edi - 0x13]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
cmp eax, 0x1fe
jb 0x418f39
or word [ebx], 0xffff
add ebx, 2
add eax, 0xfffffe02
jmp 0x418f14
mov edx, ebp
add al, dl
mov byte [ecx], al
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
jmp 0x418f4c
cmp eax, 0xff
jb 0x418f49
add eax, 0xffffff01
mov byte [ebx], 0xff
inc ebx
mov byte [ebx], al
inc ebx
mov eax, dword [esp + 0x78]
add eax, edi
mov dword [esp + 0xb4], eax
mov dword [esp + 0x78], ecx
mov edx, ebx
mov eax, dword [esp + 8]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x9c]
jmp 0x418258
mov eax, ecx
sub eax, edx
jae 0x418fc7
mov ecx, dword [esp + 0x9c]
add ecx, eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x9c], ecx
cmp ecx, 3
mov ebx, dword [esp + 0x78]
mov esi, dword [esp + 0xb4]
jg 0x418fd2
mov eax, dword [esp + 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xb8], eax
mov dword [esp + 0x9c], edi
jmp 0x418fd2
mov ebx, dword [esp + 0x78]
mov esi, dword [esp + 0xb4]
sub ebx, esi
mov eax, ebx
xor edx, edx
mov ecx, 0xff
div ecx
cmp dword [esp + 0x60], 0
mov edx, dword [esp + 0x2c]
je 0x418ffe
add eax, edx
add eax, ebx
add eax, 9
cmp eax, dword [esp + 0xac]
ja 0x4195e6
cmp ebx, 0xf
jb 0x419021
lea ecx, [ebx - 0xf]
mov byte [edx], 0xf0
lea eax, [edx + 2]
cmp ecx, 0xff
jb 0x41902d
mov byte [eax - 1], 0xff
add ecx, 0xffffff01
inc eax
jmp 0x41900c
lea eax, [edx + 1]
mov ecx, ebx
shl cl, 4
mov byte [edx], cl
jmp 0x419030
mov byte [eax - 1], cl
add ebx, eax
mov ecx, esi
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
add ecx, 8
cmp eax, ebx
jb 0x419034
mov eax, dword [esp + 0x6c]
add eax, 0xfffffffc
mov ebp, eax
xor edx, edx
mov ecx, 0xff
div ecx
mov ecx, dword [esp + 0x74]
mov word [ebx], cx
cmp dword [esp + 0x60], 0
je 0x419078
add eax, ebx
add eax, 8
cmp eax, dword [esp + 0xac]
ja 0x4195f4
add ebx, 2
mov ecx, dword [esp + 0x2c]
mov al, byte [ecx]
cmp ebp, 0xf
mov dword [esp + 0x4c], edi
jb 0x4190ae
add al, 0xf
mov byte [ecx], al
mov eax, dword [esp + 0x6c]
add eax, 0xffffffed
mov ecx, dword [esp + 0x20]
cmp eax, 0x1fe
jb 0x4190c7
or word [ebx], 0xffff
add ebx, 2
add eax, 0xfffffe02
jmp 0x419099
mov edx, ebp
add al, dl
mov byte [ecx], al
mov edx, ebx
mov eax, dword [esp + 8]
mov dword [esp + 0xa8], eax
mov ecx, dword [esp + 0x20]
jmp 0x4190e7
cmp eax, 0xff
jb 0x4190d7
add eax, 0xffffff01
mov byte [ebx], 0xff
inc ebx
mov byte [ebx], al
inc ebx
mov edx, ebx
mov eax, dword [esp + 8]
mov dword [esp + 0xa8], eax
mov dword [esp + 0x98], ecx
jmp 0x4176d6
mov esi, dword [esp + 0x14]
sub esi, dword [esp + 0x68]
mov eax, esi
xor edx, edx
mov ecx, 0xff
div ecx
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x60], 0
je 0x419125
add eax, edx
add eax, esi
add eax, 9
cmp eax, dword [esp + 0xac]
ja 0x419564
cmp esi, 0xf
jb 0x4191c9
mov ebx, esi
lea ecx, [esi - 0xf]
mov byte [edx], 0xf0
lea eax, [edx + 2]
cmp ecx, 0xff
jb 0x4191d7
mov byte [eax - 1], 0xff
add ecx, 0xffffff01
inc eax
jmp 0x419139
mov esi, edx
mov edx, ecx
mov ecx, eax
mov eax, edx
mov edi, dword [esp + 0x78]
sub eax, edi
cmp edx, esi
cmovb ecx, eax
mov dword [esp + 0x6c], ecx
mov ecx, edi
sub ecx, dword [esp + 0xb4]
mov eax, ecx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x60], 0
je 0x41919c
add eax, edx
add eax, ecx
add eax, 9
cmp eax, dword [esp + 0xac]
ja 0x4195a2
cmp ecx, 0xf
jb 0x41929a
mov eax, edx
lea edx, [ecx - 0xf]
mov byte [eax], 0xf0
add eax, 2
cmp edx, 0xff
jb 0x4192a8
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x4191b0
lea eax, [edx + 1]
mov ebx, esi
mov ecx, ebx
shl cl, 4
mov byte [edx], cl
jmp 0x4191da
mov byte [eax - 1], cl
add ebx, eax
xor ecx, ecx
mov esi, dword [esp + 0x68]
movsd xmm0, qword [esi + ecx]
lea edx, [eax + ecx]
add edx, 8
movsd qword [edx - 8], xmm0
add ecx, 8
cmp edx, ebx
jb 0x4191e2
mov eax, dword [esp + 0x6c]
lea ecx, [eax - 4]
mov eax, ecx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x74]
mov word [ebx], dx
cmp dword [esp + 0x60], 0
je 0x41922b
add eax, ebx
add eax, 8
cmp eax, dword [esp + 0xac]
ja 0x419570
add ebx, 2
mov dword [esp + 0x58], ebx
mov edx, dword [esp + 0x2c]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x41926c
add al, 0xf
mov byte [edx], al
mov eax, dword [esp + 0x6c]
add eax, 0xffffffed
mov ecx, dword [esp + 0x90]
cmp eax, 0x1fe
jb 0x41927d
mov edx, dword [esp + 0x58]
or word [edx], 0xffff
add edx, 2
mov dword [esp + 0x58], edx
add eax, 0xfffffe02
jmp 0x41924f
add al, cl
mov byte [edx], al
mov eax, dword [esp + 8]
mov dword [esp + 0x20], eax
jmp 0x41946d
cmp eax, 0xff
jb 0x41932d
add eax, 0xffffff01
mov edx, dword [esp + 0x58]
mov byte [edx], 0xff
inc edx
jmp 0x419331
lea eax, [edx + 1]
mov esi, edx
mov edx, ecx
shl dl, 4
mov byte [esi], dl
jmp 0x4192ab
mov byte [eax - 1], dl
add ecx, eax
xor edx, edx
mov edi, dword [esp + 0xb4]
movsd xmm0, qword [edi + edx]
lea esi, [eax + edx]
add esi, 8
movsd qword [esi - 8], xmm0
add edx, 8
cmp esi, ecx
jb 0x4192b6
mov eax, dword [esp + 0x6c]
lea ebx, [eax - 4]
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0x74]
mov word [ecx], dx
cmp dword [esp + 0x60], 0
je 0x4192ff
add eax, ecx
add eax, 8
cmp eax, dword [esp + 0xac]
ja 0x4195c7
add ecx, 2
mov edx, dword [esp + 0x2c]
mov al, byte [edx]
cmp ebx, 0xf
jb 0x419349
add al, 0xf
mov byte [edx], al
mov eax, dword [esp + 0x6c]
add eax, 0xffffffed
cmp eax, 0x1fe
jb 0x41934f
or word [ecx], 0xffff
add ecx, 2
add eax, 0xfffffe02
jmp 0x419318
mov edx, dword [esp + 0x58]
mov byte [edx], al
inc edx
mov dword [esp + 0x58], edx
mov eax, dword [esp + 8]
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x5c]
jmp 0x416eb3
add al, bl
mov byte [edx], al
jmp 0x419362
cmp eax, 0xff
jb 0x41935f
add eax, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x78]
add eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x20]
mov edi, eax
sub ebx, eax
mov eax, ebx
xor edx, edx
mov esi, 0xff
div esi
cmp dword [esp + 0x60], 0
je 0x419398
add eax, ecx
add eax, ebx
add eax, 9
cmp eax, dword [esp + 0xac]
ja 0x419582
cmp ebx, 0xf
jb 0x4193bd
mov esi, ebx
lea edx, [ebx - 0xf]
mov byte [ecx], 0xf0
lea eax, [ecx + 2]
cmp edx, 0xff
jb 0x4193c9
mov byte [eax - 1], 0xff
add edx, 0xffffff01
inc eax
jmp 0x4193a8
lea eax, [ecx + 1]
mov edx, ebx
shl dl, 4
mov byte [ecx], dl
jmp 0x4193ce
mov byte [eax - 1], dl
mov ebx, esi
add ebx, eax
mov edx, edi
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
add eax, 8
add edx, 8
cmp eax, ebx
jb 0x4193d2
mov eax, dword [esp + 0x9c]
add eax, 0xfffffffc
mov ebp, eax
xor edx, edx
mov esi, 0xff
div esi
mov edx, dword [esp + 0xb8]
mov word [ebx], dx
cmp dword [esp + 0x60], 0
je 0x41941c
add eax, ebx
add eax, 8
cmp eax, dword [esp + 0xac]
ja 0x419582
add ebx, 2
mov dword [esp + 0x58], ebx
mov al, byte [ecx]
cmp ebp, 0xf
jb 0x41945c
add al, 0xf
mov byte [ecx], al
mov eax, dword [esp + 0x9c]
add eax, 0xffffffed
mov ecx, dword [esp + 0x90]
cmp eax, 0x1fe
jb 0x41947d
mov edx, dword [esp + 0x58]
or word [edx], 0xffff
add edx, 2
mov dword [esp + 0x58], edx
add eax, 0xfffffe02
jmp 0x41943f
mov edx, ebp
add al, dl
mov byte [ecx], al
mov eax, dword [esp + 8]
mov dword [esp + 0xa8], eax
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x5c]
jmp 0x416eb3
cmp eax, 0xff
jb 0x419493
add eax, 0xffffff01
mov edx, dword [esp + 0x58]
mov byte [edx], 0xff
inc edx
jmp 0x419497
mov edx, dword [esp + 0x58]
mov byte [edx], al
inc edx
mov dword [esp + 0x58], edx
mov eax, dword [esp + 8]
mov dword [esp + 0xa8], eax
mov edx, dword [esp + 0x5c]
jmp 0x416eb3
mov dword [esp + 0xc], ecx
jmp 0x4194bc
add dword [esp + 0x48], edi
xor edi, edi
cmp dword [esp + 0x60], 2
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x94]
jne 0x41990a
mov ebx, eax
mov ecx, dword [esp + 0x48]
sub ecx, edx
lea eax, [ecx + 0xf0]
mov edi, 0xff
xor edx, edx
div edi
add eax, ecx
lea edi, [ebx - 3]
mov edx, dword [esp + 0x80]
add edx, eax
inc edx
cmp edx, edi
ja 0x419819
sub edi, edx
imul eax, edi, 0xff
add eax, 0x12
mov esi, dword [esp + 0xc]
cmp esi, eax
cmovb eax, esi
add edx, 2
not edx
add edx, ebx
add edx, eax
add edx, 5
cmp edx, 0xc
jl 0x419819
cmp ecx, 0xf
jb 0x41977f
lea ebx, [ecx - 0xf]
mov edx, dword [esp + 0x80]
mov byte [edx], 0xf0
add edx, 2
cmp ebx, 0xff
jb 0x419792
mov byte [edx - 1], 0xff
add ebx, 0xffffff01
inc edx
jmp 0x41954b
mov eax, dword [esp + 0x68]
mov dword [esp + 0x5c], eax
mov ecx, edx
jmp 0x41957c
mov eax, dword [esp + 0x68]
mov dword [esp + 0x5c], eax
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
jmp 0x419600
mov edx, dword [esp + 0x20]
mov dword [esp + 0x5c], edi
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x6c], eax
jmp 0x419600
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x5c], eax
mov eax, edx
mov edx, ecx
mov ecx, eax
jmp 0x419600
mov eax, dword [esp + 0x78]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x6c], edi
jmp 0x4195ee
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x5c], eax
jmp 0x4195fc
mov edx, dword [esp + 0x78]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x6c], edi
jmp 0x4195fc
mov eax, dword [esp + 0x78]
mov dword [esp + 0x5c], esi
mov ecx, edx
mov edx, eax
jmp 0x419600
mov edx, dword [esp + 0x78]
mov dword [esp + 0x5c], esi
mov ecx, dword [esp + 0x2c]
xor edi, edi
cmp dword [esp + 0x60], 2
mov eax, dword [esp + 0xac]
jne 0x419915
mov dword [esp + 0x14], edx
mov ebx, ecx
mov ecx, edx
sub ecx, dword [esp + 0x5c]
mov edi, eax
lea eax, [ecx + 0xf0]
mov esi, 0xff
xor edx, edx
div esi
add eax, ecx
lea esi, [edi - 3]
mov dword [esp + 0x58], ebx
lea edx, [ebx + eax]
inc edx
cmp edx, esi
ja 0x419696
sub esi, edx
imul eax, esi, 0xff
add eax, 0x12
mov esi, dword [esp + 0x6c]
cmp esi, eax
cmovb eax, esi
add edx, 2
not edx
add edx, edi
add edx, eax
add edx, 5
cmp edx, 0xc
jl 0x419696
cmp ecx, 0xf
jb 0x41992d
lea ebx, [ecx - 0xf]
mov edx, dword [esp + 0x58]
mov byte [edx], 0xf0
add edx, 2
cmp ebx, 0xff
jb 0x41993d
mov byte [edx - 1], 0xff
add ebx, 0xffffff01
inc edx
jmp 0x41967d
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0xc0]
mov eax, dword [esp + 0x5c]
add ebx, ecx
xor ecx, ecx
cmp edi, 2
sete byte [esp]
mov dword [esp + 0x5c], eax
sub ebx, eax
lea eax, [ebx + 0xf0]
mov esi, 0xff
xor edx, edx
div esi
test edi, edi
je 0x41971a
add eax, ebx
mov dl, byte [esp]
mov cl, dl
lea ecx, [ecx + ecx*4]
mov edx, dword [esp + 0xac]
add edx, ecx
mov ecx, dword [esp + 0x58]
add eax, ecx
inc eax
cmp eax, edx
jbe 0x41971e
xor edi, edi
cmp dword [esp + 0x60], 1
je 0x419915
mov eax, edx
mov ecx, edx
mov eax, dword [esp + 0x58]
not eax
lea ebx, [eax + edx]
add eax, edx
add eax, 0xf1
mov ecx, dword [esp + 0x58]
shr eax, 8
sub ebx, eax
jmp 0x41971e
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x5c]
lea esi, [eax + ebx]
cmp ebx, 0xf
jb 0x419742
lea eax, [ebx - 0xf]
mov byte [ecx], 0xf0
inc ecx
cmp eax, 0xff
jb 0x41974b
mov byte [ecx], 0xff
add eax, 0xffffff01
jmp 0x419730
mov eax, ebx
shl al, 4
mov byte [ecx], al
jmp 0x41974d
mov byte [ecx], al
lea eax, [ecx + 1]
push ebx
push dword [esp + 0x60]
push eax
mov edi, ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
inc edi
sub esi, dword [esp + 0x90]
mov eax, dword [esp + 0xf0]
mov dword [eax], esi
sub edi, dword [esp + 0xe0]
jmp 0x419911
mov esi, dword [esp + 0x80]
lea edx, [esi + 1]
mov ebx, ecx
shl bl, 4
mov byte [esi], bl
jmp 0x419795
mov byte [edx - 1], bl
add ecx, edx
mov esi, dword [esp + 0x94]
movsd xmm0, qword [esi]
movsd qword [edx], xmm0
add edx, 8
add esi, 8
cmp edx, ecx
jb 0x41979e
mov edx, dword [esp + 0x34]
mov word [ecx], dx
add ecx, 2
lea ebx, [eax - 4]
mov esi, dword [esp + 0x80]
mov dl, byte [esi]
cmp ebx, 0xf
jb 0x4197ea
add dl, 0xf
mov byte [esi], dl
lea edx, [eax - 0x13]
cmp edx, 0x1fe
jb 0x4197f0
or word [ecx], 0xffff
add ecx, 2
add edx, 0xfffffe02
jmp 0x4197d3
add dl, bl
mov byte [esi], dl
jmp 0x419805
cmp edx, 0xff
jb 0x419802
add edx, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], dl
inc ecx
mov edx, dword [esp + 0x48]
add edx, eax
mov dword [esp + 0x94], edx
mov dword [esp + 0x80], ecx
mov eax, dword [esp + 0x60]
xor ecx, ecx
cmp eax, 2
sete bl
mov ebp, dword [esp + 0xac]
sub ebp, dword [esp + 0x94]
mov edi, eax
lea eax, [ebp + 0xf0]
xor edx, edx
mov esi, 0xff
div esi
test edi, edi
je 0x41989a
add eax, ebp
mov cl, bl
lea ecx, [ecx + ecx*4]
mov edx, dword [esp + 0xa8]
add edx, ecx
mov ecx, edx
mov edx, dword [esp + 0x80]
add eax, edx
inc eax
cmp eax, ecx
mov edx, dword [esp + 0x94]
jbe 0x4198a1
xor edi, edi
cmp dword [esp + 0x60], 1
mov ebx, dword [esp + 0x70]
je 0x41990a
mov eax, dword [esp + 0x80]
not eax
lea ebp, [eax + ecx]
add eax, ecx
add eax, 0xf1
shr eax, 8
sub ebp, eax
jmp 0x4198a1
mov edx, dword [esp + 0x94]
lea esi, [edx + ebp]
cmp ebp, 0xf
mov ebx, ebp
jb 0x4198ca
lea eax, [ebx - 0xf]
mov ecx, dword [esp + 0x80]
mov byte [ecx], 0xf0
inc ecx
cmp eax, 0xff
jb 0x4198da
mov byte [ecx], 0xff
add eax, 0xffffff01
jmp 0x4198b8
mov eax, ebx
shl al, 4
mov ecx, dword [esp + 0x80]
mov byte [ecx], al
jmp 0x4198dc
mov byte [ecx], al
lea eax, [ecx + 1]
push ebx
push edx
push eax
mov edi, ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
inc edi
sub esi, dword [esp + 0x90]
mov eax, dword [esp + 0xf0]
mov dword [eax], esi
sub edi, dword [esp + 0xe0]
mov ebx, dword [esp + 0x70]
push ebx
call sub.msvcrt.dll_free
pop eax
test edi, edi
jg 0x419920
mov eax, dword [esp + 0x18]
mov byte [eax + 0x4001b], 1
mov eax, edi
add esp, 0x100
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [esp + 0x58]
lea edx, [esi + 1]
mov ebx, ecx
shl bl, 4
mov byte [esi], bl
jmp 0x419940
mov byte [edx - 1], bl
mov esi, dword [esp + 0x5c]
add ecx, edx
movsd xmm0, qword [esi]
movsd qword [edx], xmm0
add edx, 8
add esi, 8
cmp edx, ecx
jb 0x419946
mov edx, dword [esp + 0x74]
mov word [ecx], dx
add ecx, 2
lea ebx, [eax - 4]
mov esi, dword [esp + 0x58]
mov dl, byte [esi]
cmp ebx, 0xf
jb 0x41998f
add dl, 0xf
mov byte [esi], dl
lea edx, [eax - 0x13]
cmp edx, 0x1fe
jb 0x419995
or word [ecx], 0xffff
add ecx, 2
add edx, 0xfffffe02
jmp 0x419978
add dl, bl
mov byte [esi], dl
jmp 0x4199aa
cmp edx, 0xff
jb 0x4199a7
add edx, 0xffffff01
mov byte [ecx], 0xff
inc ecx
mov byte [ecx], dl
inc ecx
mov edx, dword [esp + 0x14]
add edx, eax
mov eax, edx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0xc0]
jmp 0x4196ac