Function at 0x401000
Capabilities:
Access peb ldr_data
Encode data using xor
Get kernel32 base address
Get number of processors
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x88
mov dword [esp + 0x18], 0xe7293abe
xor edx, edx
mov dword [esp + 0x14], 0
push esi
mov dword [esp + 0x10], 0x1bba2f48
push edi
mov dword [esp + 0x18], 0xa
mov eax, dword [esp + 0x1c]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x401030
mov eax, dword [esp + 0x20]
mov edi, 1
xor eax, dword [esp + 0x14]
add eax, 0x26
mov dword [esp + 0x28], 0xdb1a9c0d
imul esi, eax, 0x17
mov eax, 0x81020409
mov dword [esp + 0x2c], 0xe1675bcf
imul esi
mov eax, edi
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], 0x4ed93906
mov dword [esp + 0x2c], 0xb3520e76
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x28], 0xaf69f979
mov dword [esp + 0x2c], 0xe1675bcf
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], 0x4ed93906
mov dword [esp + 0x2c], 0xb3520e76
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x2c]
movaps xmm1, xmmword [esp + 0x30]
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], ecx
xorps xmm1, xmmword [esp + 0x60]
movaps xmmword [esp + 0x30], xmm1
mov dword [esp + 0x28], 0xd806912a
mov dword [esp + 0x2c], 0x920236ef
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x28], 0x2bbe5875
mov dword [esp + 0x2c], 0xb3520e49
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x28], 0xaf69f979
mov dword [esp + 0x2c], 0xe1675bcf
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], 0x4ed93906
mov dword [esp + 0x2c], 0xb3520e76
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x2c]
movaps xmm1, xmmword [esp + 0x40]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
xorps xmm1, xmmword [esp + 0x70]
movaps xmmword [esp + 0x40], xmm1
mov dword [esp + 0x18], 0x31d2d590
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edx
xor edx, edx
mov dword [esp + 0x14], 0x35e33203
mov dword [esp + 0x1c], 6
nop dword [eax]
mov eax, dword [esp + 0x20]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x4011f0
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x18]
add eax, 0x75
imul esi, eax, 0x1a
mov eax, 0x81020409
imul esi
mov eax, edi
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov eax, dword fs:[0x30]
mov dword [esp + 0x14], edx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov dword [esp + 0x18], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [esp + 0x1c], ecx
cmp ecx, esi
je 0x4012e8
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x4012e8
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 [esp + 0x20], ecx
dec edi
mov esi, 0x6f2d875e
mov cl, byte [edx]
inc edx
test cl, cl
je 0x4012dd
nop dword [eax]
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x4012c0
cmp esi, 0x2833d6a1
je 0x4012ec
mov ecx, dword [esp + 0x20]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x4012a0
mov eax, dword [eax]
jmp 0x401274
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push dword [esp + 0x24]
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]
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x48]
add eax, edx
push ecx
push dword [esp + 0x20]
call eax
mov dword [esp + 0x1c], 0x5968dcb
mov edi, eax
mov dword [esp + 0x24], 0
xor edx, edx
mov dword [esp + 0x14], 0x34fa6973
mov dword [esp + 0x20], 4
mov eax, dword [esp + 0x24]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x401341
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x1c]
not eax
sub eax, 0x5b
lea esi, [eax + eax*4]
mov eax, 0x81020409
add esi, esi
imul esi
mov eax, 1
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
cmp edi, edx
jne 0x401c37
mov dword [esp + 0x1c], 0x6312c88c
xor edx, edx
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 0x99ced38
mov dword [esp + 0x20], 4
nop word [eax + eax]
mov eax, dword [esp + 0x24]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x4013f0
mov eax, dword [esp + 0x14]
mov edi, 1
xor eax, dword [esp + 0x1c]
add eax, 0x45
mov dword [esp + 0x18], 0x93fd5bc
imul esi, eax, 0x2a
mov eax, 0x81020409
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 0x34f6c02b
mov dword [esp + 0x20], 4
imul esi
mov eax, edi
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
xor esi, esi
mov dword [esp + 0x1c], edx
nop
mov eax, dword [esp + 0x24]
mov ecx, 3
sub ecx, esi
inc esi
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
imul eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp esi, 4
jl 0x401490
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x18]
not eax
sub eax, 0xb
lea esi, [eax*8]
sub esi, eax
mov eax, 0x81020409
imul esi
mov eax, edi
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov eax, dword fs:[0x30]
mov dword [esp + 0x14], edx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop dword [eax]
mov esi, dword [eax + 0x18]
mov dword [esp + 0x18], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [esp + 0x20], ecx
cmp ecx, esi
je 0x401588
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x401588
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 [esp + 0x24], ecx
dec edi
mov esi, 0x5b3c258c
mov cl, byte [edx]
inc edx
test cl, cl
je 0x40157d
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x401560
cmp esi, 0x808e93d4
je 0x40158c
mov ecx, dword [esp + 0x24]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x401547
mov eax, dword [eax]
jmp 0x401520
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
push dword [esp + 0x14]
mov eax, dword [esi + 0x24]
push 0x3000
push dword [esp + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
push 0
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
mov dword [esp + 0x28], 0x81d89a58
xor edx, edx
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 0x62e43022
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], 7
mov eax, dword [esp + 0x24]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x4015e0
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x28]
add eax, 0x26
lea esi, [eax + eax*4]
mov eax, 0x81020409
shl esi, 2
imul esi
mov eax, 1
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov edi, edx
nop dword [eax]
mov dword [esp + 0x20], 0x49299194
xor esi, esi
mov dword [esp + 0x28], 0
mov dword [esp + 0x14], 0x29eb2d48
mov dword [esp + 0x24], 0xd
mov eax, dword [esp + 0x28]
mov ecx, 3
sub ecx, esi
inc esi
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp esi, 4
jl 0x401682
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x20]
add eax, 0x47
imul esi, eax, 0x27
mov eax, 0x81020409
imul esi
mov eax, 1
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov eax, dword [esp + 0x1c]
sub eax, edx
xor edx, edx
cmp edi, eax
jge 0x4017b4
mov dword [esp + 0x20], 0x385cb467
mov dword [esp + 0x28], edx
mov dword [esp + 0x14], 0x4977639f
mov dword [esp + 0x24], 0xa
mov eax, dword [esp + 0x28]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x401725
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x20]
not eax
sub eax, 0x1a
lea esi, [eax*8]
sub esi, eax
mov eax, 0x81020409
shl esi, 2
imul esi
mov eax, 1
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov eax, dword [esp + 0x18]
mov byte [edi + eax], dl
inc edi
jmp 0x401660
mov dword [esp + 0x20], 0x3196f7ff
mov dword [esp + 0x28], 0
mov dword [esp + 0x14], 0x2fdef5d4
mov dword [esp + 0x24], 0xb
mov eax, dword [esp + 0x28]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x4017d4
mov eax, dword [esp + 0x14]
mov edi, 1
xor eax, dword [esp + 0x20]
not eax
mov dword [esp + 0x28], 0xeb539011
sub eax, 0x64
mov dword [esp + 0x2c], 0xe1675b8b
mov esi, eax
shl esi, 4
add esi, eax
mov eax, 0x81020409
add esi, esi
imul esi
mov eax, edi
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x28], 0x4ed93906
mov dword [esp + 0x2c], 0xb3520e76
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x28], 0xaf69f979
mov dword [esp + 0x2c], 0xe1675bcf
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], 0x4ed93906
mov dword [esp + 0x2c], 0xb3520e76
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x2c]
movaps xmm1, xmmword [esp + 0x50]
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], ecx
xorps xmm1, xmmword [esp + 0x80]
movaps xmmword [esp + 0x50], xmm1
mov dword [esp + 0x20], 0x634c1be1
mov dword [esp + 0x28], 0
mov dword [esp + 0x1c], edx
xor edx, edx
mov dword [esp + 0x14], 0x3ad2d05
mov dword [esp + 0x24], 6
nop dword [eax]
mov eax, dword [esp + 0x28]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x401920
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x20]
add eax, 0x60
imul esi, eax, 0x2a
mov eax, 0x81020409
imul esi
mov eax, edi
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
mov eax, dword fs:[0x30]
mov dword [esp + 0x14], edx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov dword [esp + 0x20], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [esp + 0x24], ecx
cmp ecx, esi
je 0x401a18
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x401a18
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 [esp + 0x28], ecx
dec edi
mov esi, 0x1d79c90e
mov cl, byte [edx]
inc edx
test cl, cl
je 0x401a0d
nop dword [eax]
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x4019f0
cmp esi, 0x9ef4d011
je 0x401a1c
mov ecx, dword [esp + 0x28]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x4019d0
mov eax, dword [eax]
jmp 0x4019a4
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
push dword [esp + 0x1c]
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]
lea ecx, [esp + 0x54]
push ecx
push dword [esp + 0x20]
add eax, edx
push dword [esp + 0x20]
call eax
mov dword [esp + 0x20], 0x9d2ea471
xor edx, edx
mov dword [esp + 0x28], 1
mov dword [esp + 0x14], 0x3c30a09d
mov dword [esp + 0x24], 0xc
nop
mov eax, dword [esp + 0x28]
mov ecx, 3
sub ecx, edx
inc edx
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
imul eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp edx, 4
jl 0x401a70
mov eax, dword [esp + 0x14]
mov edi, 1
xor eax, dword [esp + 0x20]
add eax, 0x62
mov dword [esp + 0x20], 0x1b2620af
imul esi, eax, 0x27
mov eax, 0x81020409
mov dword [esp + 0x28], edi
mov dword [esp + 0x14], 0x73e316ea
mov dword [esp + 0x24], 7
imul esi
mov eax, edi
add edx, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov ecx, 0x7f
imul eax, eax, 0x7f
add eax, esi
cdq
idiv ecx
xor esi, esi
mov dword [esp + 0x1c], edx
nop dword [eax + eax]
mov eax, dword [esp + 0x28]
mov ecx, 3
sub ecx, esi
inc esi
shl ecx, 3
shl eax, cl
movzx ecx, al
mov eax, dword [esp + 0x14]
xor eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp esi, 4
jl 0x401b10
mov edx, dword [esp + 0x14]
mov eax, 0x81020409
xor edx, dword [esp + 0x20]
not edx
lea ecx, [edx*8]
sub ecx, edx
lea ecx, [ecx*4 - 0x1c]
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
sub edi, eax
imul eax, edi, 0x7f
add eax, ecx
mov ecx, 0x7f
cdq
idiv ecx
mov eax, dword fs:[0x30]
mov dword [esp + 0x14], edx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop
mov edx, dword [eax + 0x18]
mov dword [esp + 0x20], edx
mov ecx, dword [edx + 0x3c]
mov ecx, dword [ecx + edx + 0x78]
add ecx, edx
mov dword [esp + 0x24], ecx
cmp ecx, edx
je 0x401c08
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x401c08
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, edx
sub ecx, 4
dec edi
mov dword [esp + 0x28], ecx
mov esi, 0xa9f3bd55
mov ecx, dword [ecx]
add ecx, edx
mov dl, byte [ecx]
inc ecx
test dl, dl
je 0x401bfd
nop
movsx edx, dl
lea ecx, [ecx + 1]
xor edx, esi
imul esi, edx, 0x1000193
mov dl, byte [ecx - 1]
test dl, dl
jne 0x401be0
cmp esi, 0x5b653142
je 0x401c0c
mov ecx, dword [esp + 0x28]
mov edx, dword [eax + 0x18]
test edi, edi
jne 0x401bc7
mov eax, dword [eax]
jmp 0x401ba0
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
push dword [esp + 0x1c]
mov eax, dword [esi + 0x24]
push dword [esp + 0x18]
push dword [esp + 0x20]
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret