Function at 0x401de0
Capabilities:
Access peb ldr_data
Encode data using xor
Hash data using fnv
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x489545
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xa8
mov eax, dword [0x4a4314]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, edx
mov dword [ebp - 0xb4], edi
mov esi, ecx
mov dword [ebp - 0xa4], esi
movups xmm0, xmmword [0x49e5b8]
mov ax, word [0x49e5d0]
xor edx, edx
cmp dword [0x4a5684], 2
movups xmmword [ebp - 0x8c], xmm0
mov word [ebp - 0x74], ax
movq xmm0, qword [0x49e5c8]
mov al, byte [0x49e5d2]
movq qword [ebp - 0x7c], xmm0
mov byte [ebp - 0x72], al
mov dword [ebp - 0x9c], edx
jl 0x401fc0
movaps xmm0, xmmword [0x49f340]
mov eax, 4
movaps xmm4, xmmword [0x49f2f0]
movaps xmm3, xmmword [0x49f330]
movaps xmm6, xmmword [0x49f310]
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [ebp - 0x70], xmm0
mov ecx, dword [ebp - 0x70]
movd xmm7, eax
nop dword [eax + eax]
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x8c]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + edx - 0x8c], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x88]
pxor xmm1, xmm0
movd dword [ebp + edx - 0x88], xmm1
add edx, 8
cmp edx, 0x18
jl 0x401eb0
mov dword [ebp - 0x9c], edx
cmp edx, 0x1b
jge 0x401ff7
nop
mov eax, 0x288df0cb
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x9c]
movsx eax, al
mov cl, dl
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x8c], cl
inc edx
mov dword [ebp - 0x9c], edx
cmp edx, 0x1b
jl 0x401fc0
lea eax, [ebp - 0xa8]
push eax
push 0x20019
push 0
lea eax, [ebp - 0x8c]
push eax
push reloc.WS2_32.dll_accept
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x402170
push esi
call fcn.004012f0
push edi
call fcn.00401340
movq xmm0, qword [0x49e5d4]
xor edx, edx
mov al, byte [0x49e5dc]
mov dword [ebp - 0x9c], 4
movq qword [ebp - 0x20], xmm0
mov byte [ebp - 0x18], al
mov dword [ebp - 0x98], edx
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x98]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x98]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x20], cl
inc edx
mov dword [ebp - 0x98], edx
cmp edx, 9
jl 0x402052
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp - 0x9c]
push eax
push 0
lea eax, [ebp - 0xb8]
push eax
push 0
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0xa8]
call edi
test eax, eax
jne 0x402170
cmp dword [ebp - 0xb8], 1
je 0x402190
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0x1c], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0xb0], ecx
cmp ecx, esi
je 0x40213d
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x40213d
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0x94], ecx
dec edi
mov esi, 0xbda3293
mov cl, byte [edx]
inc edx
test cl, cl
je 0x402130
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x402113
cmp esi, 0xfbeb230c
je 0x402141
mov ecx, dword [ebp - 0x94]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x4020f8
mov eax, dword [eax]
jmp 0x4020d0
mov esi, dword [ebp - 0xb0]
mov edx, dword [ebp - 0x1c]
push dword [ebp - 0xa8]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
nop word [eax + eax]
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0046a386
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push ecx
push dword [ebp - 0x9c]
lea ecx, [ebp - 0x50]
call fcn.00416430
mov dword [ebp - 4], 0
lea esi, [ebp - 0x50]
cmp dword [ebp - 0x3c], 0x10
movq xmm0, qword [0x49e5d4]
cmovae esi, dword [ebp - 0x50]
xor edx, edx
mov al, byte [0x49e5dc]
movq qword [ebp - 0x20], xmm0
mov byte [ebp - 0x18], al
mov dword [ebp - 0x98], edx
nop
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x98]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x98]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x20], cl
inc edx
mov dword [ebp - 0x98], edx
cmp edx, 9
jl 0x4021d0
lea eax, [ebp - 0x9c]
push eax
push esi
push 0
push 0
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0xa8]
call edi
test eax, eax
je 0x40231e
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop word [eax + eax]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0x98], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x94], ecx
cmp ecx, esi
je 0x4022af
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x4022af
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
nop dword [eax + eax]
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0x1c], ecx
dec edi
mov esi, 0xc75f5ace
mov cl, byte [edx]
inc edx
test cl, cl
je 0x4022a5
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x402288
cmp esi, 0xa6d6e7ef
je 0x4022b3
mov ecx, dword [ebp - 0x1c]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x402270
mov eax, dword [eax]
jmp 0x402240
mov esi, dword [ebp - 0x94]
mov edx, dword [ebp - 0x98]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
push dword [ebp - 0xa8]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
nop dword [eax]
mov byte [ebp - 0x8d], 0
mov edx, dword [ebp - 0x3c]
cmp edx, 0x10
jb 0x402a7f
mov ecx, dword [ebp - 0x50]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x402a75
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a8a
jmp 0x402a75
mov esi, dword [ebp - 0x3c]
lea ecx, [ebp - 0x50]
mov edi, dword [ebp - 0x50]
cmp esi, 0x10
mov eax, dword [ebp - 0x40]
cmovae ecx, edi
mov dword [ebp - 0x94], eax
setae byte [ebp - 0x8d]
mov dword [ebp - 0x1c], ecx
test eax, eax
je 0x4023c8
push eax
push 0
push ecx
call fcn.0046c5d0
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x4023c8
sub ecx, dword [ebp - 0x1c]
cmp ecx, 0xffffffff
je 0x4023c8
mov edx, dword [ebp - 0x94]
cmp ecx, edx
ja 0x402382
cmp byte [ebp - 0x8d], 0
lea eax, [ebp - 0x50]
mov dword [ebp - 0x40], ecx
cmovne eax, edi
mov byte [eax + ecx], 0
jmp 0x4023c2
mov edi, ecx
sub esi, edx
sub edi, edx
cmp edi, esi
ja 0x4023b1
cmp byte [ebp - 0x8d], 0
lea esi, [ebp - 0x50]
push edi
cmovne esi, dword [ebp - 0x50]
add esi, edx
mov dword [ebp - 0x40], ecx
push 0
push esi
call fcn.0046c200
add esp, 0xc
mov byte [edi + esi], 0
jmp 0x4023c2
push ecx
push edi
push dword [ebp - 0xb4]
lea ecx, [ebp - 0x50]
push edi
call fcn.00417100
mov esi, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x50]
cmp esi, 0x10
lea eax, [ebp - 0x50]
cmovae eax, edi
mov dword [ebp - 0xa0], eax
mov ax, word [0x49eb74]
mov word [ebp - 0xb0], ax
mov al, byte [0x49eb76]
mov byte [ebp - 0xae], al
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop dword [eax + eax]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0xac], esi
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx + esi + 0x78]
mov ecx, dword [ecx + esi + 0x7c]
mov dword [ebp - 0x1c], ecx
lea ecx, [edx + esi]
mov dword [ebp - 0x94], ecx
cmp ecx, esi
je 0x402477
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x402477
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0x1c], ecx
dec edi
mov esi, 0x38bcd8ea
mov cl, byte [edx]
inc edx
test cl, cl
je 0x40246d
nop dword [eax + eax]
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x402450
cmp esi, 0xe9b43684
je 0x40247b
mov ecx, dword [ebp - 0x1c]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x402433
mov eax, dword [eax]
jmp 0x402400
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0xac]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
add ecx, edx
add eax, edx
movzx eax, word [eax + edi*2]
mov esi, dword [ecx + eax*4]
add esi, edx
xor edx, edx
mov dword [ebp - 0x94], edx
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x94]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x94]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0xb0], cl
inc edx
mov dword [ebp - 0x94], edx
cmp edx, 3
jl 0x4024a2
push dword [ebp - 0xa0]
lea eax, [ebp - 0xb0]
push eax
push dword [ebp - 0xa4]
call esi
movq xmm0, qword [0x49ea78]
add esp, 0xc
mov al, byte [0x49ea80]
xor edx, edx
mov dword [ebp - 0x9c], 4
movq qword [ebp - 0x5c], xmm0
mov byte [ebp - 0x54], al
mov dword [ebp - 0x94], edx
nop dword [eax]
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x94]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x94]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x5c], cl
inc edx
mov dword [ebp - 0x94], edx
cmp edx, 9
jl 0x402520
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp - 0x9c]
push eax
push 0
lea eax, [ebp - 0xb8]
push eax
push 0
lea eax, [ebp - 0x5c]
push eax
push dword [ebp - 0xa8]
call edi
test eax, eax
jne 0x4022e0
cmp dword [ebp - 0xb8], 1
je 0x402635
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop
mov esi, dword [eax + 0x18]
mov dword [ebp - 0xac], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0xa0], ecx
cmp ecx, esi
je 0x40261a
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x40261a
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
nop dword [eax + eax]
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0xa4], ecx
dec edi
mov esi, 0x91f3525
mov cl, byte [edx]
inc edx
test cl, cl
je 0x40260d
nop dword [eax + eax]
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x4025f0
cmp esi, 0x4a00de6a
je 0x40261e
mov ecx, dword [ebp - 0xa4]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x4025d0
mov eax, dword [eax]
jmp 0x4025a0
mov esi, dword [ebp - 0xa0]
mov edx, dword [ebp - 0xac]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
jmp 0x4022c5
push ecx
push dword [ebp - 0x9c]
lea ecx, [ebp - 0x38]
call fcn.00416430
mov byte [ebp - 4], 1
lea esi, [ebp - 0x38]
cmp dword [ebp - 0x24], 0x10
movq xmm0, qword [0x49ea78]
cmovae esi, dword [ebp - 0x38]
xor edx, edx
mov al, byte [0x49ea80]
movq qword [ebp - 0x6c], xmm0
mov byte [ebp - 0x64], al
mov dword [ebp - 0x94], edx
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x94]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x94]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x6c], cl
inc edx
mov dword [ebp - 0x94], edx
cmp edx, 9
jl 0x402670
lea eax, [ebp - 0x9c]
push eax
push esi
push 0
push 0
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0xa8]
call edi
test eax, eax
je 0x402793
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop word [eax + eax]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0xac], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0xa0], ecx
cmp ecx, esi
je 0x40275a
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x40275a
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
nop dword [eax + eax]
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0xa4], ecx
dec edi
mov esi, 0xaa9f3f0
mov cl, byte [edx]
inc edx
test cl, cl
je 0x40274d
nop dword [eax + eax]
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x402730
cmp esi, 0xa3bdfbfd
je 0x40275e
mov ecx, dword [ebp - 0xa4]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x402710
mov eax, dword [eax]
jmp 0x4026e0
mov esi, dword [ebp - 0xa0]
mov edx, dword [ebp - 0xac]
push dword [ebp - 0xa8]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
mov byte [ebp - 0x8d], 0
jmp 0x402a2e
mov esi, dword [ebp - 0x24]
lea ecx, [ebp - 0x38]
mov edi, dword [ebp - 0x38]
cmp esi, 0x10
mov eax, dword [ebp - 0x28]
cmovae ecx, edi
mov dword [ebp - 0xa0], eax
setae byte [ebp - 0x8d]
mov dword [ebp - 0xa4], ecx
test eax, eax
je 0x402843
push eax
push 0
push ecx
call fcn.0046c5d0
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x402843
sub ecx, dword [ebp - 0xa4]
cmp ecx, 0xffffffff
je 0x402843
mov edx, dword [ebp - 0xa0]
cmp ecx, edx
ja 0x4027fd
cmp byte [ebp - 0x8d], 0
lea eax, [ebp - 0x38]
mov dword [ebp - 0x28], ecx
cmovne eax, edi
mov byte [ecx + eax], 0
jmp 0x40283d
mov edi, ecx
sub esi, edx
sub edi, edx
cmp edi, esi
ja 0x40282c
cmp byte [ebp - 0x8d], 0
lea esi, [ebp - 0x38]
push edi
cmovne esi, dword [ebp - 0x38]
add esi, edx
mov dword [ebp - 0x28], ecx
push 0
push esi
call fcn.0046c200
add esp, 0xc
mov byte [esi + edi], 0
jmp 0x40283d
push ecx
push edi
push dword [ebp - 0xb4]
lea ecx, [ebp - 0x38]
push edi
call fcn.00417100
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x38]
cmp esi, 0x10
lea eax, [ebp - 0x38]
cmovae eax, edi
mov dword [ebp - 0x1c], eax
mov ax, word [0x49eb74]
mov word [ebp - 0x98], ax
mov al, byte [0x49eb76]
mov byte [ebp - 0x96], al
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0xac], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0xa0], ecx
cmp ecx, esi
je 0x4028ea
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x4028ea
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
nop
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0xa4], ecx
dec edi
mov esi, 0x8490aaa1
mov cl, byte [edx]
inc edx
test cl, cl
je 0x4028dd
nop dword [eax + eax]
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x4028c0
cmp esi, 0xed745775
je 0x4028ee
mov ecx, dword [ebp - 0xa4]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x4028a0
mov eax, dword [eax]
jmp 0x402873
mov esi, dword [ebp - 0xa0]
mov edx, dword [ebp - 0xac]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov esi, dword [eax + edx]
add esi, edx
xor edx, edx
mov dword [ebp - 0x94], edx
nop word [eax + eax]
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x94]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x94]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x98], cl
inc edx
mov dword [ebp - 0x94], edx
cmp edx, 3
jl 0x402920
push dword [ebp - 0x1c]
lea eax, [ebp - 0x98]
push eax
push dword [ebp - 0xb4]
call esi
mov eax, dword fs:[0x30]
add esp, 0xc
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop dword [eax]
mov edx, dword [eax + 0x18]
mov dword [ebp - 0xa0], edx
mov ecx, dword [edx + 0x3c]
mov ecx, dword [ecx + edx + 0x78]
add ecx, edx
mov dword [ebp - 0xa4], ecx
cmp ecx, edx
je 0x4029fa
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x4029fa
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, edx
nop dword [eax + eax]
sub ecx, 4
dec edi
mov dword [ebp - 0xb4], ecx
mov esi, 0xebc0157b
mov ecx, dword [ecx]
add ecx, edx
mov dl, byte [ecx]
inc ecx
test dl, dl
je 0x4029ed
nop word [eax + eax]
movsx edx, dl
lea ecx, [ecx + 1]
xor edx, esi
imul esi, edx, 0x1000193
mov dl, byte [ecx - 1]
test dl, dl
jne 0x4029d0
cmp esi, 0x4bc8b9a4
je 0x4029fe
mov ecx, dword [ebp - 0xb4]
mov edx, dword [eax + 0x18]
test edi, edi
jne 0x4029b0
mov eax, dword [eax]
jmp 0x402980
mov esi, dword [ebp - 0xa4]
mov edx, dword [ebp - 0xa0]
push dword [ebp - 0xa8]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
mov byte [ebp - 0x8d], 1
mov edx, dword [ebp - 0x24]
cmp edx, 0x10
jb 0x402a5e
mov ecx, dword [ebp - 0x38]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x402a54
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a8a
push edx
push ecx
call fcn.0046a5c6
add esp, 8
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0xf
mov byte [ebp - 0x38], 0
jmp 0x4022e7
push edx
push ecx
call fcn.0046a5c6
add esp, 8
mov al, byte [ebp - 0x8d]
jmp 0x402172
call fcn.00470be0
int3