Function at 0x47cc20
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x88
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x9c]
mov ebx, dword [ecx + 0x4010]
test ebx, ebx
je 0x47cc4c
mov ecx, dword [ecx + 0x4000]
add ecx, ebx
jmp 0x47cc4e
xor ecx, ecx
mov edx, dword [esp + 0xb0]
mov esi, dword [esp + 0x9c]
mov edi, dword [esi + 0x4008]
lea esi, [edi + eax]
cmp esi, 0x80000001
jb 0x47cd2b
mov eax, dword [esp + 0x9c]
mov esi, dword [eax + 0x4000]
add edi, 0xffff0000
movd xmm0, edi
pshufd xmm0, xmm0, 0
xor edi, edi
movdqa xmm1, xmmword [0x6b71d0]
movdqa xmm2, xmm0
pxor xmm2, xmm1
nop
mov eax, dword [esp + 0x9c]
movdqu xmm3, xmmword [eax + edi*4]
movdqu xmm4, xmmword [eax + edi*4 + 0x10]
movdqa xmm5, xmm3
pxor xmm5, xmm1
pcmpgtd xmm5, xmm2
psubd xmm3, xmm0
pand xmm3, xmm5
movdqa xmm5, xmm4
pxor xmm5, xmm1
pcmpgtd xmm5, xmm2
psubd xmm4, xmm0
pand xmm4, xmm5
movdqu xmmword [eax + edi*4], xmm3
movdqu xmmword [eax + edi*4 + 0x10], xmm4
add edi, 8
cmp edi, 0x1000
jne 0x47cca0
add esi, ebx
mov dword [eax + 0x4008], 0x10000
mov ebx, dword [eax + 0x4010]
cmp ebx, 0x10001
jb 0x47cd19
mov dword [eax + 0x4010], 0x10000
mov ebx, 0x10000
sub esi, ebx
mov dword [eax + 0x4000], esi
mov dword [esp + 0x18], 0x10000
jmp 0x47cd2f
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0xa0]
cmp edx, 2
mov esi, 1
cmovge esi, edx
cmp esi, 0x10001
mov eax, 0x10001
cmovb eax, esi
mov dword [esp + 0x6c], eax
mov esi, dword [esp + 0xa8]
cmp ebx, 3
ja 0x47cd8b
test esi, esi
jle 0x47cd8b
cmp ecx, edi
je 0x47cd8b
mov eax, dword [esp + 0x9c]
cmp dword [eax + 0x4004], 0
jne 0x47cd8b
mov dword [eax + 0x4010], 0
mov dword [eax + 0x4000], edi
xor ebx, ebx
mov ecx, edi
lea edx, [edi + esi]
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 0x4000]
mov dword [esp + 0xc], eax
cmp edx, eax
mov dword [esp + 0x60], edx
jbe 0x47cde1
cmp edx, ecx
jae 0x47cde1
mov eax, ecx
sub eax, dword [esp + 0x60]
cmp eax, 0x10000
mov edx, 0x10000
cmovb edx, eax
xor ebx, ebx
cmp edx, 4
cmovae ebx, edx
mov edx, dword [esp + 0x9c]
mov dword [edx + 0x4010], ebx
mov eax, ecx
sub eax, ebx
mov dword [esp + 0xc], eax
mov dword [edx + 0x4000], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x3c], eax
cmp ecx, edi
je 0x47cf17
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 0x4004]
mov dword [esp + 0x20], eax
test eax, eax
je 0x47cf8f
cmp esi, 0x1001
jl 0x47d0a9
push 0x4014
push dword [esp + 0x24]
push dword [esp + 0xa4]
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor eax, eax
cmp esi, 0x7e000000
ja 0x47fe30
mov edx, dword [esp + 0x9c]
mov ecx, dword [edx + 0x4000]
mov ebp, dword [edx + 0x4008]
mov eax, edi
sub eax, ebp
mov dword [esp + 4], eax
mov ebx, dword [edx + 0x4010]
lea edx, [ecx + ebx]
mov eax, edx
sub eax, ebp
test ecx, ecx
cmove edx, ecx
mov dword [esp + 0x54], edx
mov dword [esp + 0x44], ecx
cmove eax, ecx
mov dword [esp + 0x1c], eax
lea eax, [esi + edi]
add eax, 0xfffffff5
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0xa4]
add dword [esp + 0x3c], ecx
add ebx, esi
mov ecx, dword [esp + 0x9c]
mov dword [ecx + 0x4010], ebx
lea eax, [esi + ebp]
mov dword [ecx + 0x4008], eax
mov dword [ecx + 0x400c], 2
imul eax, dword [edi], 0x9e3779b1
shr eax, 0x14
mov dword [ecx + eax*4], ebp
mov edx, ebp
mov ecx, dword [esp + 0x6c]
mov ebx, ecx
shl ebx, 6
or ebx, 1
mov eax, dword [esp + 0x60]
lea ebp, [eax - 5]
mov dword [esp + 0x5c], ebp
lea ebp, [eax - 8]
mov dword [esp + 0x28], ebp
add eax, 0xfffffffa
mov dword [esp + 0x70], eax
lea eax, [edi + 4]
mov dword [esp + 0x78], eax
lea eax, [edi + 2]
mov ebp, esi
mov dword [esp + 8], edx
lea esi, [edx + 1]
lea edx, [edi + 1]
lea ebp, [ebp + edi - 5]
mov dword [esp + 0x74], ebp
mov ebp, dword [esp + 0xa4]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x64], ebx
jmp 0x47d2a4
cmp ebx, 0xffff
ja 0x47d1d2
mov eax, dword [esp + 0x18]
sub eax, ebx
mov dword [esp + 0x10], eax
jbe 0x47d1d2
xor eax, eax
cmp esi, 0x7e000000
mov edx, dword [esp + 0xa4]
ja 0x47fe51
test esi, esi
je 0x47d9a5
add dword [esp + 0x3c], edx
mov ebp, edx
lea ecx, [ebx + esi]
mov edx, dword [esp + 0x9c]
mov dword [edx + 0x4010], ecx
mov eax, dword [esp + 0x18]
lea ecx, [eax + esi]
mov dword [edx + 0x4008], ecx
mov dword [edx + 0x400c], 2
cmp esi, 0xd
jae 0x47f06b
mov dword [esp + 0x34], ebp
jmp 0x47faee
cmp ebx, 0xffff
ja 0x47d98f
mov eax, dword [esp + 0x18]
sub eax, ebx
mov dword [esp + 0x10], eax
jbe 0x47d98f
cmp esi, 0x7e000000
mov ebp, dword [esp + 0xa4]
ja 0x47d99e
test esi, esi
je 0x47e25a
mov edx, dword [esp + 0xc]
lea eax, [edx + ebx]
mov dword [esp + 0x5c], eax
mov ecx, dword [esp + 0x18]
sub eax, ecx
test edx, edx
cmove eax, edx
mov dword [esp + 0x28], eax
add dword [esp + 0x3c], ebp
add ebx, esi
mov edx, dword [esp + 0x9c]
mov dword [edx + 0x4010], ebx
lea eax, [ecx + esi]
mov dword [edx + 0x4008], eax
mov dword [edx + 0x400c], 2
mov dword [esp + 0x44], ebp
mov ebp, edi
cmp esi, 0xd
jb 0x47fb8a
mov eax, edi
mov esi, dword [esp + 0x18]
sub eax, esi
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0xa8]
lea eax, [edx + edi]
add eax, 0xfffffff5
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x60]
lea eax, [ecx - 5]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc]
test eax, eax
mov ebx, dword [esp + 0x5c]
cmove ebx, eax
mov dword [esp + 0x5c], ebx
imul eax, dword [edi], 0x9e3779b1
shr eax, 0x14
mov ebx, dword [esp + 0x9c]
mov dword [ebx + eax*4], esi
mov ebx, dword [esp + 0x6c]
shl ebx, 6
lea eax, [ecx - 8]
mov dword [esp + 0x20], eax
lea eax, [ecx - 6]
mov dword [esp + 0x7c], eax
lea eax, [edi + 4]
mov dword [esp + 0x70], eax
or ebx, 1
lea eax, [edi + 2]
inc esi
lea ebp, [edi + 1]
lea ecx, [edx + edi - 5]
mov dword [esp + 0x78], ecx
mov edx, ebp
mov ebp, edi
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x44], ecx
mov ecx, ebx
mov dword [esp + 0x74], ebx
jmp 0x47e2aa
xor eax, eax
cmp esi, 0x7e000000
ja 0x47fe30
test esi, esi
je 0x47e26e
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0x4000]
mov eax, dword [ecx + 0x4008]
mov ecx, dword [ecx + 0x4010]
add ecx, edx
mov dword [esp + 0x68], ecx
sub ecx, eax
test edx, edx
mov dword [esp + 0x28], edx
cmove ecx, edx
mov dword [esp + 0x50], ecx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x3c], edx
mov ebx, dword [esp + 0x9c]
mov dword [ebx + 0x4004], 0
mov dword [ebx + 0x4010], esi
mov ecx, dword [esp + 0x18]
add ecx, esi
mov dword [ebx + 0x4008], ecx
mov dword [ebx + 0x400c], 2
mov dword [esp + 0x64], edx
mov edx, edi
cmp esi, 0xd
jb 0x47fa59
mov ecx, edi
mov ebx, dword [esp + 0x18]
sub ecx, ebx
mov dword [esp + 0xc], ecx
mov ecx, ebx
sub ecx, eax
mov dword [esp + 0x34], ecx
lea eax, [esi + edi]
add eax, 0xfffffff5
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x60]
lea eax, [edx - 5]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x28]
test eax, eax
mov ecx, dword [esp + 0x68]
cmove ecx, eax
mov dword [esp + 0x68], ecx
imul eax, dword [edi], 0x9e3779b1
shr eax, 0x14
mov ecx, dword [esp + 0x9c]
mov dword [ecx + eax*4], ebx
mov ecx, dword [esp + 0x6c]
shl ecx, 6
lea eax, [edx - 8]
mov dword [esp + 0x40], eax
lea eax, [edx - 6]
mov dword [esp + 0x80], eax
or ecx, 1
lea eax, [edi + 4]
mov dword [esp + 0x84], eax
lea eax, [edi + 2]
lea edx, [ebx + 1]
mov dword [esp + 4], edx
mov ebx, ecx
lea ebp, [edi + 1]
lea ecx, [esi + edi - 5]
mov dword [esp + 0x7c], ecx
mov edx, edi
mov edi, ebp
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x70], ebx
jmp 0x47dacd
xor eax, eax
cmp esi, 0x7e000000
mov edx, dword [esp + 0xa4]
ja 0x47fe51
test esi, esi
je 0x47d9a5
add dword [esp + 0x3c], edx
mov ebp, edx
lea ecx, [ebx + esi]
mov edx, dword [esp + 0x9c]
mov dword [edx + 0x4010], ecx
mov eax, dword [esp + 0x18]
lea ecx, [eax + esi]
mov dword [edx + 0x4008], ecx
mov dword [edx + 0x400c], 2
cmp esi, 0xd
jae 0x47f57c
mov dword [esp + 0x20], ebp
mov esi, dword [esp + 0x60]
sub esi, edi
mov eax, dword [esp + 0x20]
lea ecx, [eax + esi]
lea eax, [esi + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ecx]
inc eax
cmp eax, dword [esp + 0x3c]
mov eax, 0
ja 0x47fe51
cmp esi, 0xf
jb 0x47fcce
mov ebx, esi
lea eax, [esi - 0xf]
mov ebp, dword [esp + 0x20]
mov byte [ebp], 0xf0
lea ecx, [ebp + 1]
cmp eax, 0xff
jae 0x47fb42
mov edx, ebx
jmp 0x47fb7d
lea edx, [ebx + 1]
mov esi, edx
sub esi, dword [esp + 4]
lea eax, [ebx + 2]
cmp eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x6c]
mov edi, ebx
mov ebx, dword [esp + 0x64]
ja 0x47fd2e
mov dword [esp + 0x10], edi
mov edi, dword [edi + 1]
mov dword [esp], edi
mov ebp, ecx
mov ecx, ebx
mov dword [esp + 0x18], edx
jmp 0x47d2e4
mov esi, edi
sub esi, dword [esp + 4]
mov eax, ebp
add eax, edi
lea edx, [ecx + 1]
shr ecx, 6
mov ebp, ecx
mov ecx, edx
mov edx, edi
mov dword [esp + 0x18], edi
cmp eax, dword [esp + 0x24]
ja 0x47fd2a
mov dword [esp + 0x14], edx
mov edi, eax
imul eax, dword [esp], 0x9e3779b1
shr eax, 0x14
mov edx, dword [esp + 0x9c]
mov ebx, dword [edx + eax*4]
mov edx, dword [edi]
mov dword [esp], edx
mov edx, dword [esp + 0x9c]
mov dword [edx + eax*4], esi
lea eax, [ebx + 0xffff]
cmp eax, esi
jb 0x47d2c0
cmp ebx, dword [esp + 8]
mov eax, dword [esp + 4]
cmovb eax, dword [esp + 0x1c]
mov edx, dword [eax + ebx]
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x18]
cmp edx, dword [esi]
mov esi, dword [esp + 0xc]
jne 0x47d2c0
add eax, ebx
cmp ebx, dword [esp + 8]
mov ecx, dword [esp + 0xa0]
cmovb ecx, dword [esp + 0x44]
mov dword [esp + 0x2c], ecx
sub esi, ebx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
sub ecx, edx
lea ebp, [ecx + 0xef]
mov dword [esp + 0x14], ecx
add ecx, 0xfffffff1
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x18]
mov edi, ecx
sub edi, edx
lea ebx, [edi - 0xf]
mov dword [esp + 0x18], ecx
mov ch, cl
shl ch, 4
mov cl, dl
shl cl, 4
sub ch, cl
xor edx, edx
mov dword [esp + 0x68], ebx
nop dword [eax + eax]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0xc]
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x58], ebx
mov byte [esp + 0x34], ch
mov dword [esp + 0x20], edi
lea ecx, [eax + edx]
mov dword [esp], edx
mov edi, dword [esp + 0x18]
add edx, edi
mov dword [esp + 0x50], edx
mov dword [esp + 0x38], ecx
cmp ecx, dword [esp + 0x2c]
jbe 0x47d40a
mov ecx, dword [esp + 0x50]
cmp ecx, dword [esp + 0x10]
jbe 0x47d40a
mov ebp, dword [esp]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + ebp - 1]
mov edx, dword [esp + 0x40]
dec edx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x4c]
dec edx
mov dword [esp + 0xc], edx
lea edx, [ebp - 1]
mov edi, dword [esp + 0x58]
lea ebx, [edi - 1]
mov ch, byte [esp + 0x34]
add ch, 0xf0
mov edi, dword [esp + 0x20]
dec edi
cmp cl, byte [eax + ebp - 1]
mov ebp, dword [esp + 0x48]
je 0x47d390
mov dword [esp + 0xc], esi
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
sub eax, ebx
mov edi, dword [esp + 0x30]
mov esi, eax
lea ecx, [edi + eax]
mov eax, dword [esp + 0x20]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ecx
mov ecx, dword [esp]
lea eax, [ecx + edx]
add eax, 9
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
lea eax, [esi + ecx]
lea ebp, [edi + 1]
cmp eax, 0xf
jb 0x47d509
mov eax, dword [esp + 0x68]
add eax, ecx
mov byte [edi], 0xf0
cmp eax, 0xff
jl 0x47d503
mov eax, dword [esp + 0x58]
cmp eax, 0x1fd
mov ebx, 0x1fd
cmovge eax, ebx
neg eax
mov edi, dword [esp + 0x14]
add eax, edi
add eax, 0xef
add eax, ecx
mov ecx, 0x80808081
mov dword [esp + 0x18], esi
mul ecx
lea esi, [edi + 0xef]
shr edx, 7
inc edx
push edx
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov ebp, dword [esp + 0x4c]
cmp ebp, 0x1fd
cmovge ebp, ebx
mov ebx, dword [esp + 0x10]
sub esi, ebp
add esi, dword [esp]
mov eax, esi
mov ecx, 0x80808081
mul ecx
mov esi, 0x80808081
mov ecx, edx
mov eax, dword [esp + 0x40]
sub eax, ebp
mul esi
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
add edx, edi
shr ecx, 7
mov eax, dword [esp + 0x30]
lea ebp, [eax + ecx]
add ebp, 2
mov eax, dword [esp]
add eax, edx
add eax, 0xfffffef2
mov esi, dword [esp + 0x18]
mov ecx, dword [esp]
mov byte [ebp], al
inc ebp
jmp 0x47d510
movzx eax, byte [esp + 0x34]
mov byte [edi], al
add ecx, ebp
add ecx, esi
lea eax, [ebp + 8]
cmp ecx, eax
mov edx, eax
mov dword [esp], ecx
cmova edx, ecx
mov edi, ebp
not edi
add edx, edi
cmp edx, 0x18
jb 0x47d59c
mov ecx, ebp
sub ecx, ebx
cmp ecx, 0x20
mov esi, dword [esp + 0xc]
jb 0x47d5a9
shr edx, 3
inc edx
mov dword [esp + 0x18], edx
mov ecx, edx
and ecx, 0xfffffffc
mov edx, ebp
mov ebp, dword [esp + 0x20]
add ebp, edx
cmp ebp, eax
cmovbe ebp, eax
lea eax, [ebx + ecx*8]
mov dword [esp + 0x14], ecx
lea ecx, [edx + ecx*8]
add edi, ebp
shr edi, 3
inc edi
and edi, 0xfffffffc
xor ebp, ebp
nop dword [eax + eax]
movdqu xmm0, xmmword [ebx + ebp*8]
movdqu xmm1, xmmword [ebx + ebp*8 + 0x10]
movdqu xmmword [edx + ebp*8], xmm0
movdqu xmmword [edx + ebp*8 + 0x10], xmm1
add ebp, 4
cmp edi, ebp
jne 0x47d570
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x18], edx
mov edx, dword [esp]
jne 0x47d5b0
jmp 0x47d5c2
mov eax, ebx
mov ecx, ebp
mov edx, dword [esp]
mov esi, dword [esp + 0xc]
jmp 0x47d5b0
mov eax, ebx
mov ecx, ebp
mov edx, dword [esp]
movq xmm0, qword [eax]
movq qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, edx
jb 0x47d5b0
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x30]
nop word [eax + eax]
mov edi, dword [esp + 0x28]
mov dword [esp], edx
mov word [edx], si
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x44]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], ecx
je 0x47d610
lea eax, [ebx + 4]
mov esi, dword [esp + 0x38]
lea edx, [esi + 4]
cmp edi, eax
jbe 0x47d971
mov ecx, dword [eax]
xor ecx, dword [edx]
je 0x47d650
tzcnt ebx, ecx
shr ebx, 3
jmp 0x47d6b9
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x38]
sub eax, esi
add eax, ebx
mov ecx, dword [esp + 0x5c]
cmp eax, ecx
cmova eax, ecx
lea edx, [ebx + 4]
add esi, 4
lea edi, [eax - 3]
cmp edi, edx
jbe 0x47d980
mov ebx, dword [edx]
xor ebx, dword [esi]
je 0x47d6c7
tzcnt ebx, ebx
shr ebx, 3
jmp 0x47d727
add ebx, 8
add esi, 8
mov edx, esi
cmp ebx, edi
jae 0x47d683
mov esi, ebx
sub esi, dword [esp + 0x10]
add esi, 0xfffffffc
nop word cs:[eax + eax]
mov ecx, dword [ebx]
xor ecx, dword [edx]
jne 0x47d6b0
add ebx, 4
add edx, 4
add esi, 4
cmp ebx, edi
jb 0x47d670
cmp ebx, dword [esp + 0x70]
jae 0x47d697
movzx ecx, word [edx]
cmp cx, word [ebx]
jne 0x47d697
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x5c]
jae 0x47d6a9
movzx ecx, byte [edx]
xor edx, edx
cmp cl, byte [ebx]
sete dl
add ebx, edx
sub ebx, eax
jmp 0x47d6b9
tzcnt ebx, ecx
shr ebx, 3
add ebx, esi
mov esi, dword [esp + 0x10]
add esi, ebx
add esi, 4
jmp 0x47d820
mov ecx, dword [esp + 0x10]
lea ebx, [ecx + 8]
mov ecx, dword [esp + 0x38]
lea esi, [ecx + 8]
cmp ebx, edi
jae 0x47d703
mov ebp, ebx
sub ebp, dword [esp + 0x10]
add ebp, 0xfffffffc
nop word cs:[eax + eax]
mov ecx, dword [ebx]
xor ecx, dword [esi]
jne 0x47d71e
add ebx, 4
add esi, 4
add ebp, 4
cmp ebx, edi
jb 0x47d6f0
lea ecx, [eax - 1]
cmp ebx, ecx
jae 0x47d73f
movzx ecx, word [esi]
cmp cx, word [ebx]
mov edi, dword [esp + 0x28]
jne 0x47d743
add ebx, 2
add esi, 2
jmp 0x47d743
tzcnt ebx, ecx
shr ebx, 3
add ebx, ebp
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
add ecx, ebx
add ecx, 4
cmp ecx, eax
je 0x47d76e
mov esi, ecx
jmp 0x47d820
mov edi, dword [esp + 0x28]
cmp ebx, eax
jae 0x47d75f
movzx ecx, byte [esi]
mov byte [esp + 0x14], cl
movzx ecx, byte [esp + 0x14]
cmp cl, byte [ebx]
mov ecx, 0
sete cl
add ebx, ecx
sub ebx, edx
mov ecx, dword [esp + 0x10]
add ecx, ebx
add ecx, 4
cmp ecx, eax
jne 0x47d738
mov ecx, edi
mov edi, dword [esp + 0xa0]
mov esi, edi
mov edx, eax
cmp ecx, eax
jbe 0x47d798
mov ecx, dword [eax]
xor ecx, dword [edi]
je 0x47d791
tzcnt edx, ecx
shr edx, 3
jmp 0x47d814
lea edx, [eax + 4]
mov esi, dword [esp + 0x78]
cmp edx, dword [esp + 0x28]
jae 0x47d7d5
mov ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x54]
sub ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x74]
cmp ecx, edi
cmovae ecx, edi
mov edi, edx
sub edi, ecx
nop word [eax + eax]
mov ecx, dword [edx]
xor ecx, dword [esi]
jne 0x47d80b
add edx, 4
add esi, 4
add edi, 4
cmp edx, dword [esp + 0x28]
jb 0x47d7c0
cmp edx, dword [esp + 0x70]
jae 0x47d7e9
movzx ecx, word [esi]
cmp cx, word [edx]
jne 0x47d7e9
add edx, 2
add esi, 2
cmp edx, dword [esp + 0x5c]
jae 0x47d807
movzx ecx, byte [esi]
mov byte [esp + 0x14], cl
movzx ecx, byte [esp + 0x14]
cmp cl, byte [edx]
mov ecx, 0
sete cl
add edx, ecx
sub edx, eax
jmp 0x47d814
tzcnt edx, ecx
shr edx, 3
add edx, edi
add ebx, edx
add eax, edx
mov esi, eax
nop word [eax + eax]
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov ebp, dword [esp]
lea eax, [edx + ebp]
add eax, 8
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
lea edi, [ebp + 2]
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx]
cmp ebx, 0xf
jb 0x47d8e0
add al, 0xf
mov byte [ecx], al
lea eax, [ebx - 0xf]
mov dword [edi], 0xffffffff
cmp eax, 0x3fc
jb 0x47d8ad
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mul ecx
mov edi, edx
lea eax, [ebp + 6]
shr edi, 9
lea ecx, [edi*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea ecx, [edi*4 + 6]
add ecx, ebp
imul eax, edi, 0xfffffc04
mov edi, ecx
add eax, ebx
add eax, 0xfffffbf5
movzx ecx, ax
imul ecx, ecx, 0x8081
shr ecx, 0x17
add eax, ecx
mov byte [edi + ecx], al
lea eax, [edi + ecx]
inc eax
mov dword [esp + 0x30], eax
mov edi, esi
cmp esi, dword [esp + 0x24]
mov ebx, dword [esp + 0xa0]
jb 0x47d8fb
jmp 0x47fd2e
mov dword [esp + 0x30], edi
add al, bl
mov byte [ecx], al
mov edi, esi
cmp esi, dword [esp + 0x24]
mov ebx, dword [esp + 0xa0]
jae 0x47fd2e
lea eax, [edi - 2]
imul ecx, dword [edi - 2], 0x9e3779b1
mov edx, dword [esp + 4]
sub eax, edx
shr ecx, 0x14
mov ebp, dword [esp + 0x9c]
mov dword [ebp + ecx*4], eax
imul ecx, dword [edi], 0x9e3779b1
shr ecx, 0x14
mov eax, dword [ebp + ecx*4]
mov esi, edi
sub esi, edx
cmp eax, dword [esp + 8]
cmovb edx, dword [esp + 0x1c]
cmovb ebx, dword [esp + 0x44]
mov dword [esp + 0x2c], ebx
mov dword [ebp + ecx*4], esi
lea ecx, [eax + 0xffff]
cmp ecx, esi
mov ebx, edi
jb 0x47d284
add edx, eax
mov ecx, dword [edx]
cmp ecx, dword [ebx]
jne 0x47d284
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x30]
lea edx, [ecx + 1]
mov byte [ecx], 0
sub esi, eax
jmp 0x47d5d0
mov ebx, eax
cmp ebx, edi
jb 0x47d65c
jmp 0x47d683
mov ebx, edx
cmp ebx, edi
jb 0x47d6d9
jmp 0x47d703
cmp esi, 0x7e000000
mov ebp, dword [esp + 0xa4]
jbe 0x47d9c7
xor eax, eax
jmp 0x47fe30
cmp dword [esp + 0xac], 0
jle 0x47fe51
mov eax, dword [esp + 0xa4]
mov byte [eax], 0
mov eax, 1
jmp 0x47fe51
test esi, esi
je 0x47e25a
mov edx, dword [esp + 0xc]
lea eax, [edx + ebx]
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x18]
sub eax, ecx
test edx, edx
cmove eax, edx
mov dword [esp + 0x38], eax
add dword [esp + 0x3c], ebp
add ebx, esi
mov edx, dword [esp + 0x9c]
mov dword [edx + 0x4010], ebx
lea eax, [ecx + esi]
mov dword [edx + 0x4008], eax
mov dword [edx + 0x400c], 2
mov dword [esp + 0x30], ebp
mov ecx, edi
cmp esi, 0xd
jb 0x47fc25
mov eax, edi
mov ebx, dword [esp + 0x18]
sub eax, ebx
mov dword [esp + 0x24], eax
lea eax, [esi + edi]
add eax, 0xfffffff5
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x60]
lea eax, [edx - 5]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xc]
test eax, eax
mov ecx, dword [esp + 0x54]
cmove ecx, eax
mov dword [esp + 0x54], ecx
imul eax, dword [edi], 0x9e3779b1
shr eax, 0x14
mov ecx, dword [esp + 0x9c]
mov dword [ecx + eax*4], ebx
mov eax, dword [esp + 0x6c]
shl eax, 6
lea ecx, [edx - 8]
mov dword [esp + 0x28], ecx
lea ecx, [edx - 6]
mov dword [esp + 0x70], ecx
mov edx, eax
lea eax, [edi + 4]
mov dword [esp + 0x78], eax
or edx, 1
lea eax, [edi + 2]
lea ebp, [ebx + 1]
lea ebx, [edi + 1]
lea ecx, [esi + edi]
add ecx, 0xfffffffb
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x30], ecx
mov ecx, edi
mov dword [esp + 0x64], edx
jmp 0x47e9a5
mov dword [esp + 0x64], edi
lea edi, [edx + 1]
mov eax, edi
sub eax, esi
mov dword [esp + 4], eax
lea eax, [edx + 2]
cmp eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x70]
ja 0x47fa59
mov dword [esp + 8], edx
mov ebp, dword [edx + 1]
mov edx, dword [esp + 0x6c]
mov ecx, ebx
mov dword [esp + 0x38], edi
mov dword [esp], edi
jmp 0x47db1f
mov eax, edi
mov esi, dword [esp + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, edx
add eax, edi
lea ebx, [ecx + 1]
shr ecx, 6
mov edx, ecx
mov ecx, ebx
mov dword [esp + 0x38], edi
mov dword [esp], edi
cmp eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
ja 0x47fe5c
mov edi, eax
imul eax, ebp, 0x9e3779b1
shr eax, 0x14
mov esi, dword [esp + 0x9c]
mov ebx, dword [esi + eax*4]
cmp ebx, dword [esp + 0x18]
jae 0x47db60
mov esi, dword [esp + 0x20]
mov ebx, dword [esi + eax*4]
mov esi, dword [esp + 0x50]
add esi, ebx
mov dword [esp + 0x24], esi
add ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x28]
jmp 0x47db71
mov esi, dword [esp + 0xc]
add esi, ebx
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + 0x10], esi
mov esi, dword [edi]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x9c]
mov ebp, dword [esp + 4]
mov dword [esi + eax*4], ebp
lea eax, [ebx + 0xffff]
cmp eax, ebp
jb 0x47daf0
mov esi, ebp
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
mov ebp, dword [esp]
cmp eax, dword [ebp]
jne 0x47daf0
sub esi, ebx
mov dword [esp + 4], esi
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x38]
sub ecx, eax
lea edx, [ecx + 0xef]
mov dword [esp + 0x48], edx
mov dword [esp + 0x38], ecx
lea esi, [ecx - 0xf]
mov edx, dword [esp]
mov edi, edx
sub edi, eax
lea ebx, [edi - 0xf]
mov ch, dl
shl ch, 4
shl al, 4
sub ch, al
xor eax, eax
mov dword [esp + 0x78], ebx
nop word cs:[eax + eax]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x44], ebp
mov dword [esp + 0x54], esi
mov ebp, ebx
mov byte [esp + 0x30], ch
mov dword [esp + 0x4c], edi
mov ecx, dword [esp + 0x24]
add ecx, eax
mov dword [esp + 0x14], eax
add eax, edx
mov dword [esp + 0x58], eax
mov dword [esp + 0x2c], ecx
cmp ecx, dword [esp + 0x10]
jbe 0x47dc6d
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 8]
jbe 0x47dc6d
mov edx, dword [esp + 0x14]
mov eax, dword [esp]
movzx ecx, byte [eax + edx - 1]
mov eax, dword [esp + 0x44]
dec eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x54]
lea esi, [eax - 1]
lea eax, [edx - 1]
lea ebx, [ebp - 1]
mov ch, byte [esp + 0x30]
add ch, 0xf0
mov edi, dword [esp + 0x4c]
dec edi
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x24]
cmp cl, byte [ebp + edx - 1]
mov ebp, dword [esp + 0x5c]
mov edx, dword [esp]
je 0x47dbf0
sub edx, dword [esp + 8]
mov ebx, dword [esp + 0x64]
lea ecx, [ebx + edx]
mov eax, dword [esp + 0x4c]
mov edi, edx
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + edx]
add eax, 9
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
mov edx, ecx
mov dword [esp], edi
lea eax, [edi + ecx]
lea ecx, [ebx + 1]
cmp eax, 0xf
mov edi, dword [esp + 0x40]
jb 0x47dd5a
mov eax, dword [esp + 0x78]
add eax, edx
mov byte [ebx], 0xf0
cmp eax, 0xff
jl 0x47dd65
cmp ebp, 0x1fd
mov eax, 0x1fd
cmovge ebp, eax
neg ebp
mov esi, dword [esp + 0x38]
lea eax, [esi + ebp]
add eax, 0xef
add eax, edx
mov edx, 0x80808081
mul edx
add esi, 0xef
shr edx, 7
inc edx
push edx
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov ebp, dword [esp + 0x54]
cmp ebp, 0x1fd
mov eax, 0x1fd
cmovge ebp, eax
sub esi, ebp
add esi, dword [esp + 0x14]
mov eax, esi
mov esi, 0x80808081
mul esi
mov ecx, edx
mov eax, dword [esp + 0x44]
sub eax, ebp
mul esi
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
add edx, dword [esp + 0x38]
shr ecx, 7
add ebx, ecx
add ebx, 2
mov eax, dword [esp + 0x14]
add eax, edx
add eax, 0xfffffef2
mov edx, dword [esp + 0x14]
jmp 0x47dd67
movzx eax, byte [esp + 0x30]
mov byte [ebx], al
mov ebx, ecx
jmp 0x47dd6a
mov ebx, ecx
mov byte [ebx], al
inc ebx
add edx, ebx
add edx, dword [esp]
lea eax, [ebx + 8]
cmp edx, eax
mov ebp, eax
cmova ebp, edx
mov esi, ebx
not esi
add ebp, esi
cmp ebp, 0x18
jb 0x47dded
mov dword [esp + 0x14], edx
mov ecx, ebx
mov edx, dword [esp + 8]
sub ecx, edx
cmp ecx, 0x20
jb 0x47ddf5
shr ebp, 3
inc ebp
mov dword [esp], ebp
mov edi, ebp
and edi, 0xfffffffc
mov ebp, dword [esp + 0x4c]
add ebp, ebx
cmp ebp, eax
cmovbe ebp, eax
lea eax, [edx + edi*8]
lea ecx, [ebx + edi*8]
add esi, ebp
shr esi, 3
inc esi
and esi, 0xfffffffc
mov ebp, ebx
xor ebx, ebx
nop
movdqu xmm0, xmmword [edx + ebx*8]
movdqu xmm1, xmmword [edx + ebx*8 + 0x10]
movdqu xmmword [ebp + ebx*8], xmm0
movdqu xmmword [ebp + ebx*8 + 0x10], xmm1
add ebx, 4
cmp esi, ebx
jne 0x47ddc0
cmp dword [esp], edi
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
jne 0x47de00
jmp 0x47de12
mov eax, dword [esp + 8]
mov ecx, ebx
jmp 0x47de00
mov eax, edx
mov ecx, ebx
mov edx, dword [esp + 0x14]
nop dword [eax]
movq xmm0, qword [eax]
movq qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, edx
jb 0x47de00
mov ecx, edx
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x64]
mov dword [esp], eax
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 4]
nop word [eax + eax]
mov dword [esp + 0x14], ecx
mov word [ecx], bx
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x28]
mov dword [esp + 8], edx
je 0x47de70
lea eax, [edx + 4]
mov ecx, dword [esp + 0x2c]
lea edx, [ecx + 4]
cmp edi, eax
jbe 0x47e23c
mov ecx, dword [eax]
xor ecx, dword [edx]
je 0x47deb0
tzcnt ebx, ecx
shr ebx, 3
jmp 0x47df1d
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x2c]
sub eax, esi
add eax, edx
mov ecx, dword [esp + 0x74]
cmp eax, ecx
cmova eax, ecx
add edx, 4
add esi, 4
lea edi, [eax - 3]
cmp edi, edx
jbe 0x47e24b
mov ebx, dword [edx]
xor ebx, dword [esi]
je 0x47df2b
tzcnt ebx, ebx
shr ebx, 3
jmp 0x47df92
mov ecx, dword [esp + 8]
lea ebx, [ecx + 8]
mov edx, dword [esp + 0x2c]
add edx, 8
cmp ebx, edi
jae 0x47dee3
mov esi, ebx
sub esi, dword [esp + 8]
add esi, 0xfffffffc
nop dword [eax + eax]
mov ecx, dword [ebx]
xor ecx, dword [edx]
jne 0x47df10
add ebx, 4
add edx, 4
add esi, 4
cmp ebx, edi
jb 0x47ded0
cmp ebx, dword [esp + 0x80]
jae 0x47e11f
movzx ecx, word [edx]
cmp cx, word [ebx]
mov esi, dword [esp + 0xc]
jne 0x47e123
add ebx, 2
add edx, 2
jmp 0x47e123
tzcnt ebx, ecx
shr ebx, 3
add ebx, esi
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 8]
add ecx, ebx
add ecx, 4
jmp 0x47dfab
mov ecx, dword [esp + 8]
lea ebx, [ecx + 8]
mov ecx, dword [esp + 0x2c]
lea esi, [ecx + 8]
cmp ebx, edi
jae 0x47df63
mov ebp, ebx
sub ebp, dword [esp + 8]
add ebp, 0xfffffffc
nop word cs:[eax + eax]
mov ecx, dword [ebx]
xor ecx, dword [esi]
jne 0x47df89
add ebx, 4
add esi, 4
add ebp, 4
cmp ebx, edi
jb 0x47df50
lea ecx, [eax - 1]
cmp ebx, ecx
jae 0x47e140
movzx ecx, word [esi]
cmp cx, word [ebx]
mov edi, dword [esp + 0x40]
jne 0x47e144
add ebx, 2
add esi, 2
jmp 0x47e144
tzcnt ebx, ecx
shr ebx, 3
add ebx, ebp
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 8]
add ecx, ebx
add ecx, 4
cmp ecx, eax
je 0x47e177
mov dword [esp + 8], ecx
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov ecx, dword [esp + 0x14]
lea eax, [ecx + edx]
add eax, 8
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
mov edx, ecx
lea edi, [ecx + 2]
mov ecx, dword [esp]
movzx eax, byte [ecx]
cmp ebx, 0xf
jb 0x47e060
add al, 0xf
mov byte [ecx], al
lea eax, [ebx - 0xf]
mov dword [edi], 0xffffffff
cmp eax, 0x3fc
jb 0x47e03c
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mov ebp, edx
mul ecx
mov edi, edx
lea eax, [ebp + 6]
shr edi, 9
lea ecx, [edi*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea ecx, [edi*4 + 6]
add ecx, ebp
imul eax, edi, 0xfffffc04
mov edi, ecx
add eax, ebx
add eax, 0xfffffbf5
movzx ecx, ax
imul ecx, ecx, 0x8081
shr ecx, 0x17
add eax, ecx
mov byte [edi + ecx], al
add edi, ecx
inc edi
jmp 0x47e064
add al, bl
mov byte [ecx], al
mov edx, dword [esp + 8]
cmp edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xa0]
jae 0x47fa55
lea eax, [edx - 2]
imul ecx, dword [edx - 2], 0x9e3779b1
sub eax, esi
shr ecx, 0x14
mov ebp, dword [esp + 0x9c]
mov dword [ebp + ecx*4], eax
imul ecx, dword [edx], 0x9e3779b1
shr ecx, 0x14
mov eax, dword [ebp + ecx*4]
cmp eax, dword [esp + 0x18]
jae 0x47e0d0
mov eax, dword [esp + 0x20]
mov eax, dword [eax + ecx*4]
mov edx, dword [esp + 0x50]
add edx, eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 8]
add eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x28]
jmp 0x47e0d7
lea ebp, [esi + eax]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x10], ebx
mov ebp, edx
sub ebp, esi
mov edx, dword [esp + 0x9c]
mov dword [edx + ecx*4], ebp
mov edx, dword [esp + 8]
lea ecx, [eax + 0xffff]
cmp ecx, ebp
jb 0x47daad
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx]
cmp ecx, dword [edx]
jne 0x47daad
mov ebx, ebp
lea ecx, [edi + 1]
mov byte [edi], 0
sub ebx, eax
mov dword [esp], edi
mov edi, dword [esp + 0x40]
jmp 0x47de30
mov esi, dword [esp + 0xc]
cmp ebx, dword [esp + 0x74]
jae 0x47e135
movzx ecx, byte [edx]
xor edx, edx
cmp cl, byte [ebx]
sete dl
add ebx, edx
mov ecx, dword [esp + 8]
sub ebx, eax
jmp 0x47df21
mov edi, dword [esp + 0x40]
cmp ebx, eax
jae 0x47e160
movzx ecx, byte [esi]
mov byte [esp + 4], cl
movzx ecx, byte [esp + 4]
cmp cl, byte [ebx]
mov ecx, 0
sete cl
add ebx, ecx
mov esi, dword [esp + 0xc]
sub ebx, edx
mov ecx, dword [esp + 8]
add ecx, ebx
add ecx, 4
cmp ecx, eax
jne 0x47dfab
mov ecx, edi
mov edi, dword [esp + 0xa0]
mov esi, edi
mov edx, eax
cmp ecx, eax
jbe 0x47e1a4
mov ecx, dword [eax]
xor ecx, dword [edi]
je 0x47e19a
tzcnt edx, ecx
shr edx, 3
jmp 0x47e22b
lea edx, [eax + 4]
mov esi, dword [esp + 0x84]
cmp edx, dword [esp + 0x40]
jae 0x47e1e5
mov ecx, dword [esp + 8]
add ecx, dword [esp + 0x68]
sub ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x7c]
cmp ecx, edi
cmovae ecx, edi
mov edi, edx
sub edi, ecx
nop word cs:[eax + eax]
mov ecx, dword [edx]
xor ecx, dword [esi]
jne 0x47e222
add edx, 4
add esi, 4
add edi, 4
cmp edx, dword [esp + 0x40]
jb 0x47e1d0
cmp edx, dword [esp + 0x80]
jae 0x47e1fc
movzx ecx, word [esi]
cmp cx, word [edx]
jne 0x47e1fc
add edx, 2
add esi, 2
cmp edx, dword [esp + 0x74]
jae 0x47e21a
movzx ecx, byte [esi]
mov byte [esp + 4], cl
movzx ecx, byte [esp + 4]
cmp cl, byte [edx]
mov ecx, 0
sete cl
add edx, ecx
mov esi, dword [esp + 0xc]
sub edx, eax
jmp 0x47e22f
tzcnt edx, ecx
shr edx, 3
add edx, edi
mov esi, dword [esp + 0xc]
add ebx, edx
add eax, edx
mov dword [esp + 8], eax
jmp 0x47dfaf
mov ebx, eax
cmp ebx, edi
jb 0x47dec2
jmp 0x47dee3
mov ebx, edx
cmp ebx, edi
jb 0x47df3d
jmp 0x47df63
cmp dword [esp + 0xac], 0
mov eax, 0
jg 0x47e27c
jmp 0x47fe30
cmp dword [esp + 0xac], 0
jle 0x47fe30
mov eax, dword [esp + 0xa4]
mov byte [eax], 0
mov eax, 1
jmp 0x47fe30
lea edx, [ebp + 1]
mov esi, edx
sub esi, dword [esp + 0x14]
lea eax, [ebp + 2]
cmp eax, dword [esp + 8]
mov ecx, dword [esp + 0x74]
ja 0x47fb8a
mov dword [esp + 0x1c], ebp
mov edi, dword [ebp + 1]
mov ebx, dword [esp + 0x6c]
mov ebp, edx
jmp 0x47e2e6
mov esi, ebp
sub esi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
add eax, ebp
lea edx, [ecx + 1]
shr ecx, 6
mov ebx, ecx
mov ecx, edx
mov edx, ebp
cmp eax, dword [esp + 8]
mov edi, dword [esp + 4]
ja 0x47fe77
mov dword [esp + 0x24], ebx
mov dword [esp + 0x38], edx
mov dword [esp], ebp
mov ebp, eax
imul eax, edi, 0x9e3779b1
shr eax, 0x14
mov edx, dword [esp + 0x9c]
mov edi, dword [edx + eax*4]
mov ebx, dword [ebp]
mov dword [esp + 4], ebx
mov dword [edx + eax*4], esi
cmp edi, dword [esp + 0x10]
jb 0x47e2c0
lea eax, [edi + 0xffff]
cmp eax, esi
jb 0x47e2c0
cmp edi, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
cmovb eax, dword [esp + 0x28]
mov edx, dword [eax + edi]
mov dword [esp + 0x2c], esi
mov esi, dword [esp]
cmp edx, dword [esi]
mov edx, dword [esp + 0x2c]
jne 0x47e2c0
add eax, edi
cmp edi, dword [esp + 0x18]
mov ecx, dword [esp + 0xa0]
cmovb ecx, dword [esp + 0xc]
mov dword [esp + 0x24], ecx
sub edx, edi
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
sub ecx, edx
lea esi, [ecx + 0xef]
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], ecx
add ecx, 0xfffffff1
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp]
mov ecx, ebx
sub ecx, edx
lea ebp, [ecx - 0xf]
mov bh, bl
shl bh, 4
shl dl, 4
sub bh, dl
xor edi, edi
mov dword [esp + 0x64], ebp
mov edx, ebp
nop word cs:[eax + eax]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x30], esi
mov esi, edx
mov byte [esp + 0x58], bh
mov dword [esp + 0x50], ecx
lea ecx, [eax + edi]
mov dword [esp + 4], edi
mov edx, dword [esp]
add edx, edi
mov dword [esp + 0x34], edx
mov dword [esp + 0x54], ecx
cmp ecx, dword [esp + 0x24]
jbe 0x47e414
mov ecx, dword [esp + 0x34]
cmp ecx, dword [esp + 0x1c]
jbe 0x47e414
mov ebp, dword [esp + 4]
mov ecx, dword [esp]
movzx ebx, byte [ecx + ebp - 1]
mov ecx, dword [esp + 0x48]
dec ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x30]
dec ecx
mov dword [esp + 0x4c], ecx
lea edi, [ebp - 1]
lea edx, [esi - 1]
mov bh, byte [esp + 0x58]
add bh, 0xf0
mov ecx, dword [esp + 0x50]
dec ecx
cmp bl, byte [eax + ebp - 1]
je 0x47e3a0
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp]
sub eax, ebx
mov edi, dword [esp + 0x44]
mov ebp, eax
lea ecx, [edi + eax]
mov eax, dword [esp + 0x50]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ecx
mov ecx, dword [esp + 4]
lea eax, [ecx + edx]
add eax, 9
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
mov edx, ebp
lea eax, [ecx + ebp]
lea ebp, [edi + 1]
cmp eax, 0xf
jb 0x47e517
mov eax, dword [esp + 0x64]
add eax, ecx
mov byte [edi], 0xf0
cmp eax, 0xff
jl 0x47e50d
cmp esi, 0x1fd
mov eax, 0x1fd
cmovge esi, eax
neg esi
mov ebx, dword [esp + 0x38]
lea eax, [ebx + esi]
add eax, 0xef
add eax, ecx
mov ecx, 0x80808081
mov dword [esp], edx
mul ecx
lea esi, [ebx + 0xef]
shr edx, 7
inc edx
push edx
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov ebp, dword [esp + 0x30]
cmp ebp, 0x1fd
mov eax, 0x1fd
cmovge ebp, eax
mov ebx, dword [esp + 0x1c]
sub esi, ebp
add esi, dword [esp + 4]
mov eax, esi
mov ecx, 0x80808081
mul ecx
mov esi, 0x80808081
mov ecx, edx
mov eax, dword [esp + 0x48]
sub eax, ebp
mul esi
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
add edx, dword [esp + 0x38]
shr ecx, 7
lea ebp, [edi + ecx]
add ebp, 2
mov eax, dword [esp + 4]
add eax, edx
add eax, 0xfffffef2
mov edx, dword [esp]
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x2c]
mov byte [ebp], al
inc ebp
jmp 0x47e522
movzx eax, byte [esp + 0x58]
mov byte [edi], al
mov esi, dword [esp + 0x2c]
add ecx, ebp
add ecx, edx
lea eax, [ebp + 8]
cmp ecx, eax
mov edx, eax
mov dword [esp + 4], ecx
cmova edx, ecx
mov edi, ebp
not edi
add edx, edi
cmp edx, 0x18
jb 0x47e5ac
mov ecx, ebp
sub ecx, ebx
cmp ecx, 0x20
jb 0x47e5ac
shr edx, 3
inc edx
mov dword [esp], edx
mov ecx, edx
and ecx, 0xfffffffc
mov edx, ebp
mov ebp, dword [esp + 0x50]
add ebp, edx
cmp ebp, eax
cmovbe ebp, eax
lea eax, [ebx + ecx*8]
mov dword [esp + 0x1c], ecx
lea ecx, [edx + ecx*8]
add edi, ebp
shr edi, 3
inc edi
and edi, 0xfffffffc
xor ebp, ebp
nop word cs:[eax + eax]
movdqu xmm0, xmmword [ebx + ebp*8]
movdqu xmm1, xmmword [ebx + ebp*8 + 0x10]
movdqu xmmword [edx + ebp*8], xmm0
movdqu xmmword [edx + ebp*8 + 0x10], xmm1
add ebp, 4
cmp edi, ebp
jne 0x47e580
mov edx, dword [esp + 0x1c]
cmp dword [esp], edx
mov edx, dword [esp + 4]
jne 0x47e5c0
jmp 0x47e5d2
mov eax, ebx
mov ecx, ebp
mov edx, dword [esp + 4]
nop word cs:[eax + eax]
movq xmm0, qword [eax]
movq qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, edx
jb 0x47e5c0
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x54]
nop word cs:[eax + eax]
mov dword [esp + 4], edx
mov word [edx], si
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0xc]
mov dword [esp + 0x1c], ebp
mov dword [esp], ecx
je 0x47e628
lea eax, [ebp + 4]
lea edx, [ebx + 4]
cmp edi, eax
jbe 0x47e96d
mov ecx, dword [eax]
xor ecx, dword [edx]
je 0x47e664
tzcnt ebx, ecx
shr ebx, 3
jmp 0x47e6c6
mov eax, dword [esp + 0x5c]
sub eax, ebx
add eax, ebp
mov ecx, dword [esp + 0x68]
cmp eax, ecx
cmova eax, ecx
lea edx, [ebp + 4]
mov dword [esp + 0x54], ebx
lea esi, [ebx + 4]
lea edi, [eax - 3]
cmp edi, edx
jbe 0x47e97c
mov ebx, dword [edx]
xor ebx, dword [esi]
je 0x47e6d5
tzcnt ebx, ebx
shr ebx, 3
jmp 0x47e732
mov edx, ebx
mov ebx, ebp
lea ebx, [ebp + 8]
add edx, 8
cmp ebx, edi
jae 0x47e693
mov esi, ebx
sub esi, dword [esp + 0x1c]
add esi, 0xfffffffc
nop dword [eax + eax]
mov ecx, dword [ebx]
xor ecx, dword [edx]
jne 0x47e6bd
add ebx, 4
add edx, 4
add esi, 4
cmp ebx, edi
jb 0x47e680
cmp ebx, dword [esp + 0x7c]
jae 0x47e6a7
movzx ecx, word [edx]
cmp cx, word [ebx]
jne 0x47e6a7
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x68]
jae 0x47e6b9
movzx ecx, byte [edx]
xor edx, edx
cmp cl, byte [ebx]
sete dl
add ebx, edx
sub ebx, eax
jmp 0x47e6c6
tzcnt ebx, ecx
shr ebx, 3
add ebx, esi
mov eax, dword [esp + 0x1c]
add eax, ebx
add eax, 4
mov dword [esp + 0x1c], eax
jmp 0x47e74b
mov ecx, dword [esp + 0x1c]
lea ebx, [ecx + 8]
mov ecx, dword [esp + 0x54]
lea esi, [ecx + 8]
cmp ebx, edi
jae 0x47e703
mov ebp, ebx
sub ebp, dword [esp + 0x1c]
add ebp, 0xfffffffc
mov ecx, dword [ebx]
xor ecx, dword [esi]
jne 0x47e729
add ebx, 4
add esi, 4
add ebp, 4
cmp ebx, edi
jb 0x47e6f0
lea ecx, [eax - 1]
cmp ebx, ecx
jae 0x47e892
movzx ecx, word [esi]
cmp cx, word [ebx]
mov edi, dword [esp + 0x20]
jne 0x47e896
add ebx, 2
add esi, 2
jmp 0x47e896
tzcnt ebx, ecx
shr ebx, 3
add ebx, ebp
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
add ecx, ebx
add ecx, 4
cmp ecx, eax
je 0x47e8c5
mov dword [esp + 0x1c], ecx
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov ecx, dword [esp + 4]
lea eax, [ecx + edx]
add eax, 8
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
mov edx, ecx
lea esi, [ecx + 2]
mov ecx, dword [esp]
movzx eax, byte [ecx]
cmp ebx, 0xf
jb 0x47e7f0
add al, 0xf
mov byte [ecx], al
lea eax, [ebx - 0xf]
mov dword [esi], 0xffffffff
cmp eax, 0x3fc
jb 0x47e7d3
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mov esi, edx
mul ecx
mov edi, edx
lea eax, [esi + 6]
shr edi, 9
lea ecx, [edi*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea esi, [esi + edi*4]
add esi, 6
imul eax, edi, 0xfffffc04
add eax, ebx
add eax, 0xfffffbf5
movzx ecx, ax
imul ecx, ecx, 0x8081
shr ecx, 0x17
add eax, ecx
mov byte [esi + ecx], al
add esi, ecx
inc esi
jmp 0x47e7f4
add al, bl
mov byte [ecx], al
mov dword [esp + 0x44], esi
mov edi, dword [esp + 0x1c]
cmp edi, dword [esp + 8]
mov ebx, dword [esp + 0xa0]
jae 0x47fb88
lea eax, [edi - 2]
imul ecx, dword [edi - 2], 0x9e3779b1
mov edx, dword [esp + 0x14]
sub eax, edx
shr ecx, 0x14
mov ebp, dword [esp + 0x9c]
mov dword [ebp + ecx*4], eax
imul ecx, dword [edi], 0x9e3779b1
shr ecx, 0x14
mov eax, dword [ebp + ecx*4]
mov esi, edi
sub esi, edx
cmp eax, dword [esp + 0x18]
cmovb edx, dword [esp + 0x28]
mov dword [ebp + ecx*4], esi
mov ecx, ebx
cmovb ecx, dword [esp + 0xc]
mov dword [esp + 0x24], ecx
cmp eax, dword [esp + 0x10]
mov ebp, edi
jb 0x47e290
lea ecx, [eax + 0xffff]
cmp ecx, esi
jb 0x47e290
mov ebx, edx
add ebx, eax
mov ecx, dword [ebx]
cmp ecx, dword [ebp]
jne 0x47e290
mov ecx, dword [esp + 0x44]
lea edx, [ecx + 1]
mov byte [ecx], 0
sub esi, eax
mov edi, dword [esp + 0x20]
jmp 0x47e5f0
mov edi, dword [esp + 0x20]
cmp ebx, eax
jae 0x47e8b2
movzx ecx, byte [esi]
mov byte [esp + 0x24], cl
movzx ecx, byte [esp + 0x24]
cmp cl, byte [ebx]
mov ecx, 0
sete cl
add ebx, ecx
sub ebx, edx
mov ecx, dword [esp + 0x1c]
add ecx, ebx
add ecx, 4
cmp ecx, eax
jne 0x47e747
mov ecx, edi
mov edi, dword [esp + 0xa0]
mov esi, edi
mov edx, eax
cmp ecx, eax
jbe 0x47e8ef
mov ecx, dword [eax]
xor ecx, dword [edi]
je 0x47e8e8
tzcnt edx, ecx
shr edx, 3
jmp 0x47e964
lea edx, [eax + 4]
mov esi, dword [esp + 0x70]
cmp edx, dword [esp + 0x20]
jae 0x47e925
mov ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x5c]
sub ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x78]
cmp ecx, edi
cmovae ecx, edi
mov edi, edx
sub edi, ecx
nop
mov ecx, dword [edx]
xor ecx, dword [esi]
jne 0x47e95b
add edx, 4
add esi, 4
add edi, 4
cmp edx, dword [esp + 0x20]
jb 0x47e910
cmp edx, dword [esp + 0x7c]
jae 0x47e939
movzx ecx, word [esi]
cmp cx, word [edx]
jne 0x47e939
add edx, 2
add esi, 2
cmp edx, dword [esp + 0x68]
jae 0x47e957
movzx ecx, byte [esi]
mov byte [esp + 0x24], cl
movzx ecx, byte [esp + 0x24]
cmp cl, byte [edx]
mov ecx, 0
sete cl
add edx, ecx
sub edx, eax
jmp 0x47e964
tzcnt edx, ecx
shr edx, 3
add edx, edi
add ebx, edx
add eax, edx
jmp 0x47e6cf
mov ebx, eax
cmp ebx, edi
jb 0x47e672
jmp 0x47e693
mov ebx, edx
cmp ebx, edi
jb 0x47e6e7
jmp 0x47e703
mov ecx, ebx
inc ebx
mov ebp, ebx
sub ebp, dword [esp + 0x24]
lea eax, [ecx + 2]
cmp eax, dword [esp + 0x14]
mov edx, dword [esp + 0x64]
ja 0x47fc25
mov dword [esp + 0x10], ecx
mov ecx, dword [ecx + 1]
mov dword [esp + 4], ecx
mov esi, dword [esp + 0x6c]
mov ecx, edx
mov edi, ebx
jmp 0x47e9e0
mov ebp, edi
sub ebp, dword [esp + 0x24]
mov eax, esi
add eax, edi
lea edx, [ecx + 1]
shr ecx, 6
mov esi, ecx
mov ecx, edx
mov ebx, edi
cmp eax, dword [esp + 0x14]
ja 0x47fe80
mov dword [esp], edi
mov dword [esp + 8], ebx
mov edi, eax
imul eax, dword [esp + 4], 0x9e3779b1
shr eax, 0x14
mov edx, dword [esp + 0x9c]
mov ebx, dword [edx + eax*4]
mov edx, dword [edi]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x9c]
mov dword [edx + eax*4], ebp
lea eax, [ebx + 0xffff]
cmp eax, ebp
jb 0x47e9c0
cmp ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
cmovb eax, dword [esp + 0x38]
mov edx, dword [eax + ebx]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp]
cmp edx, dword [ebp]
mov edx, dword [esp + 0x1c]
jne 0x47e9c0
add eax, ebx
cmp ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0xa0]
cmovb ecx, dword [esp + 0xc]
mov dword [esp + 0x2c], ecx
sub edx, ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 8]
sub ecx, edx
lea esi, [ecx + 0xef]
mov dword [esp + 8], ecx
lea ebp, [ecx - 0xf]
mov ecx, dword [esp]
mov edi, ecx
sub edi, edx
lea ebx, [edi - 0xf]
mov ch, cl
shl ch, 4
mov cl, dl
shl cl, 4
sub ch, cl
xor edx, edx
mov dword [esp + 0x68], ebx
nop word [eax + eax]
mov dword [esp + 0x40], esi
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x58], ebx
mov byte [esp + 0x34], ch
mov dword [esp + 0x20], edi
lea ecx, [eax + edx]
mov dword [esp + 4], edx
mov esi, dword [esp]
add edx, esi
mov dword [esp + 0x50], edx
mov dword [esp + 0x44], ecx
cmp ecx, dword [esp + 0x2c]
jbe 0x47eb04
mov ecx, dword [esp + 0x50]
cmp ecx, dword [esp + 0x10]
jbe 0x47eb04
mov esi, dword [esp + 4]
mov ecx, dword [esp]
movzx ecx, byte [ecx + esi - 1]
mov edx, dword [esp + 0x40]
dec edx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x4c]
lea ebp, [edx - 1]
lea edx, [esi - 1]
mov edi, dword [esp + 0x58]
lea ebx, [edi - 1]
mov ch, byte [esp + 0x34]
add ch, 0xf0
mov edi, dword [esp + 0x20]
dec edi
cmp cl, byte [eax + esi - 1]
mov esi, dword [esp + 0x48]
je 0x47ea90
mov eax, dword [esp]
sub eax, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
mov ebx, eax
lea ecx, [esi + eax]
mov eax, dword [esp + 0x20]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ecx
mov ecx, dword [esp + 4]
lea eax, [ecx + edx]
add eax, 9
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
lea eax, [ebx + ecx]
lea edx, [esi + 1]
mov dword [esp + 0x48], edx
cmp eax, 0xf
mov edi, dword [esp + 0x28]
jb 0x47ec09
mov eax, dword [esp + 0x68]
add eax, ecx
mov byte [esi], 0xf0
cmp eax, 0xff
jl 0x47ec1a
mov ebp, dword [esp + 0x58]
cmp ebp, 0x1fd
mov eax, 0x1fd
cmovge ebp, eax
neg ebp
mov esi, dword [esp + 8]
lea eax, [esi + ebp]
add eax, 0xef
add eax, ecx
mov ecx, 0x80808081
mov dword [esp], ebx
mul ecx
lea ebx, [esi + 0xef]
mov ebp, esi
shr edx, 7
inc edx
push edx
push 0xff
push dword [esp + 0x50]
call sub.msvcrt.dll_memset
add esp, 0xc
mov ecx, dword [esp + 0x4c]
cmp ecx, 0x1fd
mov eax, 0x1fd
cmovge ecx, eax
sub ebx, ecx
add ebx, dword [esp + 4]
mov eax, ebx
mov edx, 0x80808081
mul edx
mov ebx, 0x80808081
mov esi, edx
mov eax, dword [esp + 0x40]
sub eax, ecx
mul ebx
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
add edx, ebp
shr esi, 7
mov eax, dword [esp + 0x30]
add esi, eax
add esi, 2
mov eax, dword [esp + 4]
add eax, edx
add eax, 0xfffffef2
mov ebx, dword [esp]
mov ecx, dword [esp + 4]
jmp 0x47ec1e
movzx eax, byte [esp + 0x34]
mov byte [esi], al
mov esi, dword [esp + 0x48]
mov ebp, dword [esp + 0x1c]
jmp 0x47ec25
mov esi, dword [esp + 0x48]
mov ebp, dword [esp + 0x1c]
mov byte [esi], al
inc esi
add ecx, esi
add ecx, ebx
lea ebx, [esi + 8]
cmp ecx, ebx
mov eax, ebx
mov dword [esp + 4], ecx
cmova eax, ecx
mov edx, esi
not edx
add eax, edx
mov dword [esp], eax
cmp eax, 0x18
jb 0x47ecc0
mov ecx, esi
mov eax, dword [esp + 0x10]
sub ecx, eax
cmp ecx, 0x20
jb 0x47ecc4
mov eax, dword [esp]
shr eax, 3
inc eax
mov dword [esp], eax
mov ecx, eax
and ecx, 0xfffffffc
mov edi, dword [esp + 0x20]
add edi, esi
cmp edi, ebx
cmovbe edi, ebx
mov ebx, dword [esp + 0x10]
lea eax, [ebx + ecx*8]
mov dword [esp + 8], ecx
lea ecx, [esi + ecx*8]
add edx, edi
shr edx, 3
inc edx
and edx, 0xfffffffc
mov edi, ebx
xor ebx, ebx
nop word [eax + eax]
movdqu xmm0, xmmword [edi + ebx*8]
movdqu xmm1, xmmword [edi + ebx*8 + 0x10]
movdqu xmmword [esi + ebx*8], xmm0
movdqu xmmword [esi + ebx*8 + 0x10], xmm1
add ebx, 4
cmp edx, ebx
jne 0x47ec90
mov edx, dword [esp + 8]
cmp dword [esp], edx
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 4]
jne 0x47ecd0
jmp 0x47ece2
mov eax, dword [esp + 0x10]
mov ecx, esi
mov edx, dword [esp + 4]
nop word [eax + eax]
movq xmm0, qword [eax]
movq qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, edx
jb 0x47ecd0
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x44]
nop
mov dword [esp + 4], edx
mov word [edx], bp
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0xc]
mov dword [esp + 0x10], ebx
mov dword [esp], ecx
je 0x47ed28
lea eax, [ebx + 4]
lea edx, [esi + 4]
cmp edi, eax
jbe 0x47f04d
mov ecx, dword [eax]
xor ecx, dword [edx]
je 0x47ed64
tzcnt ebx, ecx
shr ebx, 3
jmp 0x47edc6
mov eax, dword [esp + 0x54]
sub eax, esi
add eax, ebx
mov ecx, dword [esp + 0x5c]
cmp eax, ecx
cmova eax, ecx
lea edx, [ebx + 4]
lea edi, [esi + 4]
lea ebp, [eax - 3]
cmp ebp, edx
mov dword [esp + 0x44], esi
jbe 0x47f05c
mov esi, dword [edx]
xor esi, dword [edi]
je 0x47edd8
tzcnt ebx, esi
shr ebx, 3
jmp 0x47ee45
add ebx, 8
add esi, 8
mov edx, esi
cmp ebx, edi
jae 0x47ed93
mov esi, ebx
sub esi, dword [esp + 0x10]
add esi, 0xfffffffc
nop dword [eax]
mov ecx, dword [ebx]
xor ecx, dword [edx]
jne 0x47edbd
add ebx, 4
add edx, 4
add esi, 4
cmp ebx, edi
jb 0x47ed80
cmp ebx, dword [esp + 0x70]
jae 0x47eda7
movzx ecx, word [edx]
cmp cx, word [ebx]
jne 0x47eda7
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x5c]
jae 0x47edb9
movzx ecx, byte [edx]
xor edx, edx
cmp cl, byte [ebx]
sete dl
add ebx, edx
sub ebx, eax
jmp 0x47edc6
tzcnt ebx, ecx
shr ebx, 3
add ebx, esi
mov eax, dword [esp + 0x10]
add eax, ebx
add eax, 4
mov dword [esp + 0x10], eax
jmp 0x47ee5e
add ebx, 8
mov esi, dword [esp + 0x44]
lea edi, [esi + 8]
cmp ebx, ebp
jae 0x47ee03
mov esi, ebx
sub esi, dword [esp + 0x10]
add esi, 0xfffffffc
nop
mov ecx, dword [ebx]
xor ecx, dword [edi]
jne 0x47ee3c
add ebx, 4
add edi, 4
add esi, 4
cmp ebx, ebp
jb 0x47edf0
lea ecx, [eax - 1]
cmp ebx, ecx
jae 0x47ee18
movzx ecx, word [edi]
cmp cx, word [ebx]
jne 0x47ee18
add ebx, 2
add edi, 2
cmp ebx, eax
jae 0x47ee34
movzx ecx, byte [edi]
mov byte [esp + 8], cl
movzx ecx, byte [esp + 8]
cmp cl, byte [ebx]
mov ecx, 0
sete cl
add ebx, ecx
mov edi, dword [esp + 0x28]
sub ebx, edx
jmp 0x47ee49
tzcnt ebx, ecx
shr ebx, 3
add ebx, esi
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
add ecx, ebx
add ecx, 4
cmp ecx, eax
je 0x47efa4
mov dword [esp + 0x10], ecx
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov ecx, dword [esp + 4]
lea eax, [ecx + edx]
add eax, 8
cmp eax, dword [esp + 0x3c]
ja 0x47d99e
mov edx, ecx
lea esi, [ecx + 2]
mov ecx, dword [esp]
movzx eax, byte [ecx]
cmp ebx, 0xf
jb 0x47ef10
add al, 0xf
mov byte [ecx], al
lea eax, [ebx - 0xf]
mov dword [esi], 0xffffffff
cmp eax, 0x3fc
jb 0x47eee6
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mov esi, edx
mul ecx
mov edi, edx
lea eax, [esi + 6]
shr edi, 9
lea ecx, [edi*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea esi, [esi + edi*4]
add esi, 6
imul eax, edi, 0xfffffc04
add eax, ebx
add eax, 0xfffffbf5
movzx ecx, ax
imul ecx, ecx, 0x8081
shr ecx, 0x17
add eax, ecx
mov byte [esi + ecx], al
lea eax, [esi + ecx]
inc eax
mov dword [esp + 0x30], eax
jmp 0x47ef18
mov dword [esp + 0x30], esi
add al, bl
mov byte [ecx], al
mov esi, dword [esp + 0x10]
cmp esi, dword [esp + 0x14]
mov edi, dword [esp + 0xa0]
jae 0x47fc23
lea eax, [esi - 2]
imul ecx, dword [esi - 2], 0x9e3779b1
mov ebx, dword [esp + 0x24]
sub eax, ebx
shr ecx, 0x14
mov edx, dword [esp + 0x9c]
mov dword [edx + ecx*4], eax
imul ecx, dword [esi], 0x9e3779b1
shr ecx, 0x14
mov eax, dword [edx + ecx*4]
mov ebp, esi
sub ebp, ebx
cmp eax, dword [esp + 0x18]
cmovb ebx, dword [esp + 0x38]
cmovb edi, dword [esp + 0xc]
mov dword [esp + 0x2c], edi
mov dword [edx + ecx*4], ebp
lea ecx, [eax + 0xffff]
cmp ecx, ebp
mov ecx, esi
mov esi, ebx
mov ebx, ecx
jb 0x47e98b
add esi, eax
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x47e98b
mov ecx, dword [esp + 0x30]
lea edx, [ecx + 1]
mov byte [ecx], 0
sub ebp, eax
mov edi, dword [esp + 0x28]
jmp 0x47ecf0
mov esi, dword [esp + 0xa0]
mov ecx, edi
mov edi, esi
mov edx, eax
cmp ecx, eax
jbe 0x47efce
mov ecx, dword [eax]
xor ecx, dword [esi]
je 0x47efc7
tzcnt edx, ecx
shr edx, 3
jmp 0x47f044
lea edx, [eax + 4]
mov edi, dword [esp + 0x78]
cmp edx, dword [esp + 0x28]
jae 0x47f005
mov ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x54]
sub ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x74]
cmp ecx, esi
cmovae ecx, esi
mov esi, edx
sub esi, ecx
nop dword [eax]
mov ecx, dword [edx]
xor ecx, dword [edi]
jne 0x47f03b
add edx, 4
add edi, 4
add esi, 4
cmp edx, dword [esp + 0x28]
jb 0x47eff0
cmp edx, dword [esp + 0x70]
jae 0x47f019
movzx ecx, word [edi]
cmp cx, word [edx]
jne 0x47f019
add edx, 2
add edi, 2
cmp edx, dword [esp + 0x5c]
jae 0x47f037
movzx ecx, byte [edi]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0x10]
cmp cl, byte [edx]
mov ecx, 0
sete cl
add edx, ecx
sub edx, eax
jmp 0x47f044
tzcnt edx, ecx
shr edx, 3
add edx, esi
add ebx, edx
add eax, edx
jmp 0x47edcf
mov ebx, eax
cmp ebx, edi
jb 0x47ed70
jmp 0x47ed93
mov ebx, edx
cmp ebx, ebp
jb 0x47ede6
jmp 0x47ee03
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x14], ecx
lea ecx, [esi + edi]
add ecx, 0xfffffff5
mov dword [esp + 8], ecx
mov esi, dword [esp + 0x60]
lea ecx, [esi - 5]
mov dword [esp + 0x58], ecx
mov ecx, edi
imul edx, dword [edi], 0x9e3779b1
sub ecx, ebx
mov dword [esp + 0x50], ecx
shr edx, 0x14
mov ecx, dword [esp + 0x9c]
mov dword [ecx + edx*4], eax
mov ebx, dword [esp + 0x6c]
mov edx, ebx
shl edx, 6
lea eax, [esi - 8]
mov dword [esp + 0x18], eax
lea eax, [esi - 6]
mov dword [esp + 0x48], eax
or edx, 1
lea eax, [edi + 2]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x4c], edx
jmp 0x47f0e3
mov dword [esp + 0x34], esi
lea eax, [edi + 2]
cmp eax, dword [esp + 8]
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x4c]
ja 0x47faee
lea ebp, [edi + 1]
mov dword [esp + 0xc], edi
mov esi, dword [edi + 1]
mov edi, ebx
jmp 0x47f120
mov eax, edi
mov ebp, dword [esp + 0x24]
add eax, ebp
lea ebx, [edx + 1]
shr edx, 6
mov edi, edx
mov edx, ebx
cmp eax, dword [esp + 8]
mov esi, dword [esp + 4]
ja 0x47fe65
imul ebx, esi, 0x9e3779b1
shr ebx, 0x14
mov esi, dword [esp + 0x9c]
mov ecx, dword [esi + ebx*4]
mov dword [esp], ebp
sub ebp, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov eax, dword [eax]
mov dword [esp + 4], eax
mov dword [esi + ebx*4], ebp
cmp ecx, dword [esp + 0x10]
jb 0x47f100
mov eax, ecx
lea ebx, [ecx + 0xffff]
cmp ebx, ebp
jb 0x47f100
mov esi, dword [esp + 0x14]
mov ebx, dword [esi + eax]
mov esi, dword [esp]
cmp ebx, dword [esi]
jne 0x47f100
add eax, dword [esp + 0x14]
mov ecx, dword [esp]
mov edx, ecx
mov ebx, dword [esp + 0xc]
sub edx, ebx
lea edi, [edx + 0xef]
lea esi, [edx - 0xf]
mov ch, cl
shl ch, 4
mov cl, bl
shl cl, 4
sub ch, cl
xor ebp, ebp
mov dword [esp + 0x40], esi
nop word cs:[eax + eax]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], esi
mov byte [esp + 0x38], ch
mov dword [esp + 0x24], edx
lea ecx, [eax + ebp]
mov dword [esp + 4], ebp
mov edx, dword [esp]
add edx, ebp
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ecx
cmp ecx, dword [esp + 0x50]
jbe 0x47f203
cmp dword [esp + 0x1c], ebx
jbe 0x47f203
mov ebx, dword [esp + 4]
mov ecx, dword [esp]
movzx ecx, byte [ecx + ebx - 1]
mov edx, dword [esp + 0x2c]
lea edi, [edx - 1]
mov edx, dword [esp + 0x28]
lea esi, [edx - 1]
lea ebp, [ebx - 1]
mov ch, byte [esp + 0x38]
add ch, 0xf0
mov edx, dword [esp + 0x24]
dec edx
cmp cl, byte [eax + ebx - 1]
mov ebx, dword [esp + 0xc]
je 0x47f1a0
mov ebp, ebx
mov ecx, dword [esp]
sub ecx, ebx
mov edi, dword [esp + 0x34]
mov eax, dword [esp + 0x24]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, edi
add edx, ecx
mov ebx, dword [esp + 4]
lea eax, [ebx + edx]
add eax, 9
cmp eax, dword [esp + 0x3c]
ja 0x47fe89
lea eax, [ecx + ebx]
lea edx, [edi + 1]
cmp eax, 0xf
mov esi, edi
jb 0x47f2d2
mov eax, dword [esp + 0x40]
add eax, ebx
mov byte [esi], 0xf0
cmp eax, 0xff
mov edi, ebx
jl 0x47f2c9
mov esi, dword [esp + 0x28]
cmp esi, 0x1fd
mov eax, 0x1fd
cmovge esi, eax
mov eax, ecx
sub eax, esi
add eax, edi
add eax, 0xef
mov ebx, edx
mov edx, 0x80808081
mul edx
shr edx, 7
mov dword [esp], edx
lea eax, [edx + 1]
push eax
push 0xff
push ebx
mov ebx, ecx
call sub.msvcrt.dll_memset
mov ecx, ebx
add esp, 0xc
mov eax, dword [esp + 0x2c]
sub eax, esi
mov edx, 0x80808081
mul edx
mov esi, dword [esp + 0x34]
mov eax, dword [esp]
lea ebx, [esi + eax]
add ebx, 2
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
add edx, ecx
lea eax, [edi + edx]
add eax, 0xfffffef2
mov edx, ebx
mov ebx, dword [esp + 0x20]
mov byte [edx], al
inc edx
jmp 0x47f2df
movzx eax, byte [esp + 0x38]
mov byte [esi], al
mov edi, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add edi, ecx
lea eax, [edx + 8]
cmp edi, eax
mov ecx, eax
mov dword [esp + 4], edi
cmova ecx, edi
mov edi, edx
not edi
add ecx, edi
cmp ecx, 0x18
jb 0x47f371
mov dword [esp + 0x34], esi
mov esi, ecx
mov ecx, edx
sub edx, ebp
cmp edx, 0x20
jb 0x47f379
shr esi, 3
inc esi
mov dword [esp], esi
mov ebx, esi
and ebx, 0xfffffffc
mov esi, dword [esp + 0x24]
add esi, ecx
cmp esi, eax
cmovbe esi, eax
lea eax, [ebx*8]
add eax, ebp
lea edx, [ecx + ebx*8]
add edi, esi
shr edi, 3
inc edi
and edi, 0xfffffffc
xor esi, esi
nop dword [eax]
movdqu xmm0, xmmword [ebp + esi*8]
movdqu xmm1, xmmword [ebp + esi*8 + 0x10]
movdqu xmmword [ecx + esi*8], xmm0
movdqu xmmword [ecx + esi*8 + 0x10], xmm1
add esi, 4
cmp edi, esi
jne 0x47f340
cmp dword [esp], ebx
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x20]
jne 0x47f390
jmp 0x47f3a2
mov eax, ebp
mov ecx, dword [esp + 4]
jmp 0x47f390
mov eax, ebp
mov edx, ecx
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x34]
nop word cs:[eax + eax]
movq xmm0, qword [eax]
movq qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, ecx
jb 0x47f390
mov edx, ecx
mov edi, dword [esp + 0x1c]
nop dword [eax + eax]
mov ecx, esi
mov eax, edi
sub eax, ebx
mov ebp, edx
mov word [edx], ax
lea eax, [edi + 4]
lea edx, [ebx + 4]
cmp dword [esp + 0x18], eax
mov dword [esp + 0xc], edi
jbe 0x47f56b
mov esi, dword [eax]
xor esi, dword [edx]
je 0x47f3e0
tzcnt ebx, esi
shr ebx, 3
jmp 0x47f459
mov edx, ebx
lea ebx, [edi + 8]
add edx, 8
cmp ebx, dword [esp + 0x18]
jae 0x47f415
mov esi, ebx
sub esi, dword [esp + 0xc]
add esi, 0xfffffffc
nop word [eax + eax]
mov edi, dword [ebx]
xor edi, dword [edx]
jne 0x47f450
add ebx, 4
add edx, 4
add esi, 4
cmp ebx, dword [esp + 0x18]
jb 0x47f400
cmp ebx, dword [esp + 0x48]
jae 0x47f429
movzx esi, word [edx]
cmp si, word [ebx]
jne 0x47f429
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x58]
jae 0x47f445
movzx edx, byte [edx]
mov byte [esp], dl
movzx edx, byte [esp]
cmp dl, byte [ebx]
mov edx, 0
sete dl
add ebx, edx
sub ebx, eax
jmp 0x47f459
tzcnt ebx, edi
shr ebx, 3
add ebx, esi
lea eax, [ebx + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ebp]
add eax, 8
cmp eax, dword [esp + 0x3c]
ja 0x47fe89
lea esi, [ebp + 2]
movzx eax, byte [ecx]
cmp ebx, 0xf
jb 0x47f4f0
add al, 0xf
mov byte [ecx], al
lea eax, [ebx - 0xf]
mov dword [esi], 0xffffffff
cmp eax, 0x3fc
jb 0x47f4d9
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mul ecx
mov edi, edx
lea eax, [ebp + 6]
shr edi, 9
lea ecx, [edi*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea esi, [edi*4 + 6]
add esi, ebp
imul eax, edi, 0xfffffc04
add eax, ebx
add eax, 0xfffffbf5
movzx ecx, ax
imul ecx, ecx, 0x8081
shr ecx, 0x17
add eax, ecx
mov byte [esi + ecx], al
add esi, ecx
inc esi
jmp 0x47f4f4
add al, bl
mov byte [ecx], al
mov edi, dword [esp + 0xc]
add edi, ebx
add edi, 4
cmp edi, dword [esp + 8]
jae 0x47faea
imul eax, dword [edi - 2], 0x9e3779b1
lea ecx, [edi - 2]
mov edx, dword [esp + 0x14]
sub ecx, edx
shr eax, 0x14
mov ebp, dword [esp + 0x9c]
mov dword [ebp + eax*4], ecx
imul ecx, dword [edi], 0x9e3779b1
shr ecx, 0x14
mov ebx, dword [ebp + ecx*4]
mov eax, edi
sub eax, edx
mov dword [ebp + ecx*4], eax
cmp ebx, dword [esp + 0x10]
jb 0x47f0ca
lea ecx, [ebx + 0xffff]
cmp ecx, eax
jb 0x47f0ca
add ebx, dword [esp + 0x14]
mov eax, dword [ebx]
cmp eax, dword [edi]
jne 0x47f0ca
lea edx, [esi + 1]
mov byte [esi], 0
jmp 0x47f3b0
mov ebx, eax
cmp ebx, dword [esp + 0x18]
jb 0x47f3ee
jmp 0x47f415
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x24], ecx
lea ecx, [esi + edi]
add ecx, 0xfffffff5
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 0x60]
lea ecx, [esi - 5]
mov dword [esp + 0x58], ecx
mov ecx, edi
imul edx, dword [edi], 0x9e3779b1
sub ecx, ebx
mov dword [esp + 0x34], ecx
shr edx, 0x14
mov ecx, dword [esp + 0x9c]
mov dword [ecx + edx*4], eax
mov ecx, dword [esp + 0x6c]
mov edx, ecx
shl edx, 6
lea eax, [esi - 8]
mov dword [esp + 0x18], eax
lea eax, [esi - 6]
mov dword [esp + 0x48], eax
or edx, 1
lea eax, [edi + 2]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x4c], edx
jmp 0x47f5f0
lea eax, [edi + 2]
cmp eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x4c]
ja 0x47d229
lea ebx, [edi + 1]
mov dword [esp + 0xc], edi
mov ebp, dword [edi + 1]
mov esi, ecx
mov ecx, edx
mov edx, ebx
jmp 0x47f62f
mov eax, dword [esp + 4]
add eax, edi
lea ebx, [ecx + 1]
shr ecx, 6
mov esi, ecx
mov ecx, ebx
mov edx, edi
cmp eax, dword [esp + 0x14]
mov ebp, dword [esp]
ja 0x47fe6e
mov dword [esp + 4], esi
mov edi, eax
imul ebp, ebp, 0x9e3779b1
shr ebp, 0x14
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + ebp*4]
mov ebx, edx
sub ebx, dword [esp + 0x24]
mov esi, dword [edi]
mov dword [esp], esi
mov esi, dword [esp + 0x9c]
mov dword [esi + ebp*4], ebx
lea ebp, [eax + 0xffff]
cmp ebp, ebx
jb 0x47f610
mov esi, dword [esp + 0x24]
mov ebx, dword [esi + eax]
cmp ebx, dword [edx]
jne 0x47f610
add eax, dword [esp + 0x24]
mov dword [esp + 8], eax
mov ebx, edx
mov eax, dword [esp + 0xc]
sub ebx, eax
lea edi, [ebx + 0xef]
lea ebp, [ebx - 0xf]
mov ch, dl
shl ch, 4
mov cl, al
shl cl, 4
sub ch, cl
xor esi, esi
mov dword [esp + 0x40], ebp
nop dword [eax]
mov dword [esp + 0x38], edi
mov dword [esp + 0x2c], ebp
mov byte [esp + 0x1c], ch
mov dword [esp + 4], ebx
mov ecx, eax
mov eax, dword [esp + 8]
add eax, esi
mov dword [esp], esi
mov edi, edx
add edx, esi
mov dword [esp + 0x10], edx
mov edx, edi
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x34]
mov eax, ecx
jbe 0x47f714
cmp dword [esp + 0x10], eax
jbe 0x47f714
mov eax, dword [esp]
movzx ecx, byte [edx + eax - 1]
mov edx, dword [esp + 0x38]
dec edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x2c]
lea ebp, [edx - 1]
lea esi, [eax - 1]
mov ch, byte [esp + 0x1c]
add ch, 0xf0
mov edx, dword [esp + 4]
lea ebx, [edx - 1]
mov edx, edi
mov edi, dword [esp + 8]
cmp cl, byte [edi + eax - 1]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0xc]
je 0x47f6a0
mov ebx, eax
sub edx, eax
mov edi, dword [esp + 0x20]
lea esi, [edi + edx]
mov eax, dword [esp + 4]
mov ecx, edx
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, esi
mov esi, dword [esp]
lea eax, [esi + edx]
add eax, 9
cmp eax, dword [esp + 0x3c]
ja 0x47fe89
lea eax, [ecx + esi]
lea ebp, [edi + 1]
cmp eax, 0xf
mov edx, ecx
jb 0x47f7df
mov eax, dword [esp + 0x40]
add eax, esi
mov byte [edi], 0xf0
cmp eax, 0xff
jl 0x47f7d9
mov edi, dword [esp + 0x2c]
cmp edi, 0x1fd
mov eax, 0x1fd
cmovge edi, eax
mov eax, edx
sub eax, edi
add eax, esi
add eax, 0xef
mov esi, 0x80808081
mov dword [esp + 0xc], edx
mul esi
shr edx, 7
mov dword [esp + 8], edx
lea eax, [edx + 1]
push eax
push 0xff
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x38]
sub eax, edi
mul esi
mov esi, dword [esp]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 8]
lea ebp, [eax + ecx]
add ebp, 2
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
add edx, dword [esp + 0xc]
lea eax, [esi + edx]
add eax, 0xfffffef2
mov edx, dword [esp + 0xc]
mov byte [ebp], al
inc ebp
jmp 0x47f7e6
movzx eax, byte [esp + 0x1c]
mov byte [edi], al
add esi, ebp
add esi, edx
lea eax, [ebp + 8]
cmp esi, eax
mov ecx, eax
mov dword [esp], esi
cmova ecx, esi
mov esi, ebp
not esi
add ecx, esi
cmp ecx, 0x18
jb 0x47f869
mov edx, ebp
sub edx, ebx
cmp edx, 0x20
jb 0x47f869
shr ecx, 3
inc ecx
mov edx, ecx
and edx, 0xfffffffc
mov edi, ebp
mov ebp, dword [esp + 4]
add ebp, edi
cmp ebp, eax
cmovbe ebp, eax
lea eax, [ebx + edx*8]
mov dword [esp + 4], edx
lea edx, [edi + edx*8]
add esi, ebp
shr esi, 3
inc esi
and esi, 0xfffffffc
mov ebp, ebx
xor ebx, ebx
nop dword [eax + eax]
movdqu xmm0, xmmword [ebp + ebx*8]
movdqu xmm1, xmmword [ebp + ebx*8 + 0x10]
movdqu xmmword [edi + ebx*8], xmm0
movdqu xmmword [edi + ebx*8 + 0x10], xmm1
add ebx, 4
cmp esi, ebx
jne 0x47f840
cmp ecx, dword [esp + 4]
mov esi, dword [esp]
jne 0x47f870
jmp 0x47f882
mov eax, ebx
mov edx, ebp
mov esi, dword [esp]
movq xmm0, qword [eax]
movq qword [edx], xmm0
add edx, 8
add eax, 8
cmp edx, esi
jb 0x47f870
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x50]
nop
mov eax, edi
sub eax, ebx
mov ebp, esi
mov word [esi], ax
lea eax, [edi + 4]
lea edx, [ebx + 4]
cmp dword [esp + 0x18], eax
mov dword [esp + 0xc], edi
jbe 0x47fa44
mov esi, dword [eax]
xor esi, dword [edx]
je 0x47f8c0
tzcnt ebx, esi
shr ebx, 3
jmp 0x47f939
mov edx, ebx
lea ebx, [edi + 8]
add edx, 8
cmp ebx, dword [esp + 0x18]
jae 0x47f8f5
mov esi, ebx
sub esi, dword [esp + 0xc]
add esi, 0xfffffffc
nop word [eax + eax]
mov edi, dword [ebx]
xor edi, dword [edx]
jne 0x47f930
add ebx, 4
add edx, 4
add esi, 4
cmp ebx, dword [esp + 0x18]
jb 0x47f8e0
cmp ebx, dword [esp + 0x48]
jae 0x47f909
movzx esi, word [edx]
cmp si, word [ebx]
jne 0x47f909
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x58]
jae 0x47f925
movzx edx, byte [edx]
mov byte [esp], dl
movzx edx, byte [esp]
cmp dl, byte [ebx]
mov edx, 0
sete dl
add ebx, edx
sub ebx, eax
jmp 0x47f939
tzcnt ebx, edi
shr ebx, 3
add ebx, esi
lea eax, [ebx + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ebp]
add eax, 8
cmp eax, dword [esp + 0x3c]
ja 0x47fe89
lea edx, [ebp + 2]
movzx eax, byte [ecx]
cmp ebx, 0xf
jb 0x47f9d0
add al, 0xf
mov byte [ecx], al
lea eax, [ebx - 0xf]
mov dword [edx], 0xffffffff
cmp eax, 0x3fc
jb 0x47f9b9
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mul ecx
mov edi, edx
lea eax, [ebp + 6]
shr edi, 9
lea ecx, [edi*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea edx, [edi*4 + 6]
add edx, ebp
imul eax, edi, 0xfffffc04
add eax, ebx
add eax, 0xfffffbf5
movzx ecx, ax
imul ecx, ecx, 0x8081
shr ecx, 0x17
add eax, ecx
mov byte [edx + ecx], al
add edx, ecx
inc edx
jmp 0x47f9d4
add al, bl
mov byte [ecx], al
mov dword [esp + 0x20], edx
mov edi, dword [esp + 0xc]
add edi, ebx
add edi, 4
cmp edi, dword [esp + 0x14]
jae 0x47d229
lea eax, [edi - 2]
imul ecx, dword [edi - 2], 0x9e3779b1
mov esi, dword [esp + 0x24]
sub eax, esi
shr ecx, 0x14
mov edx, dword [esp + 0x9c]
mov dword [edx + ecx*4], eax
imul eax, dword [edi], 0x9e3779b1
shr eax, 0x14
mov ebx, dword [edx + eax*4]
mov ecx, edi
sub ecx, esi
mov dword [edx + eax*4], ecx
lea eax, [ebx + 0xffff]
cmp eax, ecx
jb 0x47f5db
add ebx, esi
mov eax, dword [ebx]
cmp eax, dword [edi]
jne 0x47f5db
mov ecx, dword [esp + 0x20]
lea esi, [ecx + 1]
mov byte [ecx], 0
jmp 0x47f890
mov ebx, eax
cmp ebx, dword [esp + 0x18]
jb 0x47f8ce
jmp 0x47f8f5
mov dword [esp + 0x64], edi
mov esi, dword [esp + 0x60]
mov dword [esp + 8], edx
sub esi, edx
mov edi, dword [esp + 0x64]
lea ecx, [edi + esi]
lea eax, [esi + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ecx]
inc eax
cmp eax, dword [esp + 0x3c]
mov eax, 0
ja 0x47fe30
cmp esi, 0xf
jb 0x47fcc0
lea eax, [esi - 0xf]
mov byte [edi], 0xf0
lea ecx, [edi + 1]
cmp eax, 0xff
jb 0x47fdd3
lea eax, [esi - 0x10e]
mov edx, 0x80808081
mul edx
mov ebx, edx
shr ebx, 7
lea eax, [ebx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, ebx
shl eax, 8
lea ecx, [ebx + edi]
add ecx, 2
sub ebx, eax
mov edx, esi
lea eax, [esi + ebx]
add eax, 0xfffffef2
jmp 0x47fdd5
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x60]
sub esi, edi
mov eax, dword [esp + 0x34]
lea ecx, [eax + esi]
lea eax, [esi + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ecx]
inc eax
cmp eax, dword [esp + 0x3c]
mov eax, 0
ja 0x47fe51
cmp esi, 0xf
jb 0x47fcdb
mov ebx, esi
lea eax, [esi - 0xf]
mov ebp, dword [esp + 0x34]
mov byte [ebp], 0xf0
lea ecx, [ebp + 1]
cmp eax, 0xff
jb 0x47d27d
lea eax, [ebx - 0x10e]
mov edx, 0x80808081
mul edx
mov esi, edx
shr esi, 7
lea eax, [esi + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, esi
shl eax, 8
lea ecx, [esi + ebp]
add ecx, 2
sub esi, eax
mov edx, ebx
lea eax, [ebx + esi]
add eax, 0xfffffef2
mov byte [ecx], al
mov esi, ecx
mov ebx, edx
jmp 0x47fce8
mov ebp, edi
mov esi, dword [esp + 0x60]
sub esi, ebp
mov eax, dword [esp + 0x44]
lea ecx, [eax + esi]
lea eax, [esi + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ecx]
inc eax
cmp eax, dword [esp + 0x3c]
mov eax, 0
ja 0x47fe30
cmp esi, 0xf
jb 0x47fd06
lea eax, [esi - 0xf]
mov edi, dword [esp + 0x44]
mov byte [edi], 0xf0
lea ecx, [edi + 1]
cmp eax, 0xff
jb 0x47fdf3
lea eax, [esi - 0x10e]
mov edx, 0x80808081
mul edx
mov dword [esp + 0x1c], ebp
mov ebx, edx
shr ebx, 7
lea eax, [ebx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, ebx
shl eax, 8
lea ecx, [ebx + edi]
add ecx, 2
sub ebx, eax
mov edx, esi
lea eax, [esi + ebx]
add eax, 0xfffffef2
mov ebp, dword [esp + 0x1c]
jmp 0x47fdf5
mov ecx, esi
mov esi, dword [esp + 0x60]
sub esi, ecx
mov eax, dword [esp + 0x30]
mov ebx, ecx
lea ecx, [eax + esi]
lea eax, [esi + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ecx]
inc eax
cmp eax, dword [esp + 0x3c]
mov eax, 0
ja 0x47fe30
cmp esi, 0xf
jb 0x47fd18
lea eax, [esi - 0xf]
mov edi, dword [esp + 0x30]
mov byte [edi], 0xf0
lea ecx, [edi + 1]
cmp eax, 0xff
jb 0x47fe0f
lea eax, [esi - 0x10e]
mov edx, 0x80808081
mul edx
mov dword [esp + 0x10], ebx
mov ebx, edx
shr ebx, 7
lea eax, [ebx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, ebx
shl eax, 8
lea ecx, [ebx + edi]
add ecx, 2
sub ebx, eax
mov edx, esi
lea eax, [esi + ebx]
add eax, 0xfffffef2
mov ebx, dword [esp + 0x10]
jmp 0x47fe11
mov ebx, esi
mov eax, ebx
shl al, 4
mov byte [edi], al
jmp 0x47fddb
mov ebx, esi
mov eax, ebx
shl al, 4
mov esi, dword [esp + 0x20]
jmp 0x47fce6
mov ebx, esi
mov eax, ebx
shl al, 4
mov esi, dword [esp + 0x34]
mov byte [esi], al
lea eax, [esi + 1]
push ebx
push edi
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea eax, [esi + ebx]
inc eax
sub eax, dword [esp + 0xa4]
jmp 0x47fe51
mov ebx, esi
mov eax, ebx
shl al, 4
mov esi, dword [esp + 0x44]
mov byte [esi], al
jmp 0x47fdfb
mov edx, esi
mov eax, edx
shl al, 4
mov esi, dword [esp + 0x30]
mov byte [esi], al
jmp 0x47fe15
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x60]
sub esi, edi
mov eax, dword [esp + 0x30]
lea ecx, [eax + esi]
lea eax, [esi + 0xf0]
mov edx, 0x80808081
mul edx
shr edx, 7
lea eax, [edx + ecx]
inc eax
cmp eax, dword [esp + 0x3c]
mov eax, 0
ja 0x47fe30
cmp esi, 0xf
jb 0x47fdb5
lea eax, [esi - 0xf]
mov ebp, dword [esp + 0x30]
mov byte [ebp], 0xf0
lea ecx, [ebp + 1]
cmp eax, 0xff
jb 0x47fdc4
lea eax, [esi - 0x10e]
mov edx, 0x80808081
mul edx
mov ebx, edx
shr ebx, 7
lea eax, [ebx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, ebx
shl eax, 8
lea ecx, [ebx + ebp]
add ecx, 2
sub ebx, eax
mov edx, esi
lea eax, [esi + ebx]
add eax, 0xfffffef2
jmp 0x47fdc6
mov ebx, esi
mov eax, ebx
shl al, 4
mov esi, dword [esp + 0x30]
mov byte [esi], al
jmp 0x47fdcc
mov edx, esi
mov byte [ecx], al
mov esi, ecx
mov ebx, edx
lea eax, [esi + 1]
push ebx
push edi
jmp 0x47fe00
mov edx, esi
mov byte [ecx], al
mov edi, ecx
mov ebx, edx
mov ecx, dword [esp + 8]
lea eax, [edi + 1]
push ebx
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea eax, [edi + ebx]
inc eax
jmp 0x47fe29
mov edx, esi
mov byte [ecx], al
mov esi, ecx
mov ebx, edx
lea eax, [esi + 1]
push ebx
push ebp
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea eax, [esi + ebx]
inc eax
jmp 0x47fe29
mov edx, esi
mov byte [ecx], al
mov esi, ecx
lea eax, [esi + 1]
push edx
push ebx
push eax
mov edi, edx
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea eax, [esi + edi]
inc eax
sub eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x9c]
mov dword [edx + 0x4000], ecx
mov ecx, dword [esp + 0xa8]
mov dword [edx + 0x4010], ecx
add esp, 0x88
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [esp + 8]
jmp 0x47fa59
mov edi, dword [esp + 0xc]
jmp 0x47faee
mov edi, dword [esp + 0xc]
jmp 0x47d229
mov ebp, dword [esp + 0x1c]
jmp 0x47fb8a
mov ecx, dword [esp + 0x10]
jmp 0x47fc25
xor eax, eax
jmp 0x47fe51