Function at 0x401ae0
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x64]
sub esp, 0x64
push 0xffffffffffffffff
push 0x528bf0
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
push ebx
push esi
push edi
mov eax, dword [0x8611f4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dl, byte [0x8a8f67]
mov ebx, dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
test dl, dl
jne 0x401cb3
xor esi, esi
mov dword [ebp + 0x58], esi
nop dword [eax]
lea ecx, [ebp + 0x50]
call fcn.00401410
call ebx
cdq
push edx
push eax
push dword [ebp + 0x54]
push dword [ebp + 0x50]
call fcn.00528990
push 0
push 0x10
push edx
push eax
call fcn.00528990
inc eax
lea ecx, [ebp - 0x64]
xor eax, 0x10
shl eax, 0xa
or eax, 0x1010101
mov dword [esi + 0x8a9010], eax
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x20
push edx
push eax
call fcn.00528990
mov ecx, dword [ebp + 0x58]
inc eax
xor eax, 0x20
shl eax, 0xb
or eax, 0x1010101
mov dword [ecx + 0x8a8fd0], eax
lea ecx, [ebp - 0x6c]
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp + 0x50], edi
mov dword [ebp + 0x54], esi
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x40
push edx
push eax
call fcn.00528990
mov esi, dword [ebp + 0x58]
inc eax
xor eax, 0x40
shl eax, 0xc
or eax, 0x1010101
mov dword [esi + 0x8a8f90], eax
add esi, 4
mov dword [ebp + 0x58], esi
cmp esi, 0x40
jl 0x401b30
lea ecx, [ebp + 0x50]
call fcn.00401410
mov edi, dword [ebp + 0x54]
xor esi, esi
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x401c0e
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push edi
push dword [ebp + 0x50]
call fcn.00528990
mov byte [esi + 0x8a8f8c], al
inc esi
cmp esi, 4
jb 0x401c00
lea ecx, [ebp - 0x74]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x401c4e
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f84], al
inc esi
cmp esi, 8
jb 0x401c40
lea ecx, [ebp - 0x7c]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x401c8e
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f78], al
inc esi
cmp esi, 0xc
jb 0x401c80
mov dl, 1
mov byte [0x8a8f67], dl
cmp byte [0x8a9051], 0
jne 0x401ccd
mov dword [0x8a9454], 0x401650
mov byte [0x8a9051], 1
mov ah, byte [0x8a9050]
test ah, ah
jne 0x401d10
mov esi, 0xfeeddccb
mov ecx, 0x8a9058
mov eax, esi
sub esi, 0xffff
xor eax, 0xababdbf3
mov dword [ecx], eax
add ecx, 4
cmp ecx, 0x8a9454
jl 0x401ce1
mov byte [0x8a9050], 1
mov ah, byte [0x8a9050]
nop dword [eax + eax]
cmp byte [0x8a9052], 0
jne 0x401d2a
mov dword [0x8a9454], 0x401650
mov byte [0x8a9052], 1
test dl, dl
jne 0x401ec0
xor esi, esi
mov dword [ebp + 0x58], esi
lea ecx, [ebp + 0x50]
call fcn.00401410
call ebx
cdq
push edx
push eax
push dword [ebp + 0x54]
push dword [ebp + 0x50]
call fcn.00528990
push 0
push 0x10
push edx
push eax
call fcn.00528990
inc eax
lea ecx, [ebp - 0x84]
xor eax, 0x10
shl eax, 0xa
or eax, 0x1010101
mov dword [esi + 0x8a9010], eax
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x20
push edx
push eax
call fcn.00528990
mov ecx, dword [ebp + 0x58]
inc eax
xor eax, 0x20
shl eax, 0xb
or eax, 0x1010101
mov dword [ecx + 0x8a8fd0], eax
lea ecx, [ebp - 0xec]
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp + 0x50], edi
mov dword [ebp + 0x54], esi
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x40
push edx
push eax
call fcn.00528990
mov esi, dword [ebp + 0x58]
inc eax
xor eax, 0x40
shl eax, 0xc
or eax, 0x1010101
mov dword [esi + 0x8a8f90], eax
add esi, 4
mov dword [ebp + 0x58], esi
cmp esi, 0x40
jl 0x401d37
lea ecx, [ebp + 0x50]
call fcn.00401410
mov edi, dword [ebp + 0x54]
xor esi, esi
call ebx
and eax, 0x8000000f
jns 0x401e14
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push edi
push dword [ebp + 0x50]
call fcn.00528990
mov byte [esi + 0x8a8f8c], al
inc esi
cmp esi, 4
jb 0x401e06
lea ecx, [ebp - 0xe4]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x401e54
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f84], al
inc esi
cmp esi, 8
jb 0x401e46
lea ecx, [ebp - 0xdc]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x401e94
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f78], al
inc esi
cmp esi, 0xc
jb 0x401e86
mov ah, byte [0x8a9050]
mov dl, 1
mov byte [0x8a8f67], dl
nop
test ah, ah
jne 0x401ef7
mov esi, 0xfeeddccb
mov ecx, 0x8a9058
nop
mov eax, esi
sub esi, 0xffff
xor eax, 0xababdbf3
mov dword [ecx], eax
add ecx, 4
cmp ecx, 0x8a9454
jl 0x401ed0
mov byte [0x8a9050], 1
mov ah, byte [0x8a9050]
test dl, dl
jne 0x402090
xor esi, esi
mov dword [ebp + 0x58], esi
lea ecx, [ebp + 0x50]
call fcn.00401410
call ebx
cdq
push edx
push eax
push dword [ebp + 0x54]
push dword [ebp + 0x50]
call fcn.00528990
push 0
push 0x10
push edx
push eax
call fcn.00528990
inc eax
lea ecx, [ebp - 0xd4]
xor eax, 0x10
shl eax, 0xa
or eax, 0x1010101
mov dword [esi + 0x8a9010], eax
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x20
push edx
push eax
call fcn.00528990
mov ecx, dword [ebp + 0x58]
inc eax
xor eax, 0x20
shl eax, 0xb
or eax, 0x1010101
mov dword [ecx + 0x8a8fd0], eax
lea ecx, [ebp - 0xf4]
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp + 0x50], edi
mov dword [ebp + 0x54], esi
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x40
push edx
push eax
call fcn.00528990
mov esi, dword [ebp + 0x58]
inc eax
xor eax, 0x40
shl eax, 0xc
or eax, 0x1010101
mov dword [esi + 0x8a8f90], eax
add esi, 4
mov dword [ebp + 0x58], esi
cmp esi, 0x40
jl 0x401f04
lea ecx, [ebp + 0x50]
call fcn.00401410
mov edi, dword [ebp + 0x54]
xor esi, esi
call ebx
and eax, 0x8000000f
jns 0x401fe1
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push edi
push dword [ebp + 0x50]
call fcn.00528990
mov byte [esi + 0x8a8f8c], al
inc esi
cmp esi, 4
jb 0x401fd3
lea ecx, [ebp - 0x8c]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x402021
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f84], al
inc esi
cmp esi, 8
jb 0x402013
lea ecx, [ebp - 0x94]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x402061
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f78], al
inc esi
cmp esi, 0xc
jb 0x402053
mov ah, byte [0x8a9050]
mov dl, 1
mov byte [0x8a8f67], dl
nop dword [eax]
cmp byte [0x8a9051], 0
jne 0x4020aa
mov dword [0x8a9454], 0x401650
mov byte [0x8a9051], 1
test ah, ah
jne 0x4020e7
mov esi, 0xfeeddccb
mov ecx, 0x8a9058
nop dword [eax + eax]
mov eax, esi
sub esi, 0xffff
xor eax, 0xababdbf3
mov dword [ecx], eax
add ecx, 4
cmp ecx, 0x8a9454
jl 0x4020c0
mov byte [0x8a9050], 1
mov ah, byte [0x8a9050]
cmp byte [0x8a9052], 0
jne 0x402101
mov dword [0x8a9454], 0x401650
mov byte [0x8a9052], 1
test dl, dl
jne 0x4022a0
xor esi, esi
mov dword [ebp + 0x58], esi
nop
lea ecx, [ebp + 0x50]
call fcn.00401410
call ebx
cdq
push edx
push eax
push dword [ebp + 0x54]
push dword [ebp + 0x50]
call fcn.00528990
push 0
push 0x10
push edx
push eax
call fcn.00528990
inc eax
lea ecx, [ebp - 0x44]
xor eax, 0x10
shl eax, 0xa
or eax, 0x1010101
mov dword [esi + 0x8a9010], eax
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x20
push edx
push eax
call fcn.00528990
mov ecx, dword [ebp + 0x58]
inc eax
xor eax, 0x20
shl eax, 0xb
or eax, 0x1010101
mov dword [ecx + 0x8a8fd0], eax
lea ecx, [ebp - 0x4c]
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp + 0x50], edi
mov dword [ebp + 0x54], esi
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x40
push edx
push eax
call fcn.00528990
mov esi, dword [ebp + 0x58]
inc eax
xor eax, 0x40
shl eax, 0xc
or eax, 0x1010101
mov dword [esi + 0x8a8f90], eax
add esi, 4
mov dword [ebp + 0x58], esi
cmp esi, 0x40
jl 0x402110
lea ecx, [ebp + 0x50]
call fcn.00401410
mov edi, dword [ebp + 0x54]
xor esi, esi
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x4021ee
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push edi
push dword [ebp + 0x50]
call fcn.00528990
mov byte [esi + 0x8a8f8c], al
inc esi
cmp esi, 4
jb 0x4021e0
lea ecx, [ebp - 0x54]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x40222e
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f84], al
inc esi
cmp esi, 8
jb 0x402220
lea ecx, [ebp - 0x5c]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x40226e
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f78], al
inc esi
cmp esi, 0xc
jb 0x402260
mov ah, byte [0x8a9050]
mov dl, 1
mov byte [0x8a8f67], dl
nop dword [eax]
test ah, ah
jne 0x4022e0
mov esi, 0xfeeddccb
mov ecx, 0x8a9058
nop
mov eax, esi
sub esi, 0xffff
xor eax, 0xababdbf3
mov dword [ecx], eax
add ecx, 4
cmp ecx, 0x8a9454
jl 0x4022b0
mov byte [0x8a9050], 1
mov ah, byte [0x8a9050]
nop word [eax + eax]
mov dword [ebp + 0x58], 0
test dl, dl
jne 0x40247b
xor esi, esi
mov dword [ebp + 0x60], esi
lea ecx, [ebp + 0x48]
call fcn.00401410
call ebx
cdq
push edx
push eax
push dword [ebp + 0x4c]
push dword [ebp + 0x48]
call fcn.00528990
push 0
push 0x10
push edx
push eax
call fcn.00528990
inc eax
lea ecx, [ebp - 0x9c]
xor eax, 0x10
shl eax, 0xa
or eax, 0x1010101
mov dword [esi + 0x8a9010], eax
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x20
push edx
push eax
call fcn.00528990
mov ecx, dword [ebp + 0x60]
inc eax
xor eax, 0x20
shl eax, 0xb
or eax, 0x1010101
mov dword [ecx + 0x8a8fd0], eax
lea ecx, [ebp - 0xa4]
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp + 0x48], edi
mov dword [ebp + 0x4c], esi
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x40
push edx
push eax
call fcn.00528990
mov esi, dword [ebp + 0x60]
inc eax
xor eax, 0x40
shl eax, 0xc
or eax, 0x1010101
mov dword [esi + 0x8a8f90], eax
add esi, 4
mov dword [ebp + 0x60], esi
cmp esi, 0x40
jl 0x4022f4
lea ecx, [ebp + 0x48]
call fcn.00401410
mov edi, dword [ebp + 0x4c]
xor esi, esi
call ebx
and eax, 0x8000000f
jns 0x4023d1
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push edi
push dword [ebp + 0x48]
call fcn.00528990
mov byte [esi + 0x8a8f8c], al
inc esi
cmp esi, 4
jb 0x4023c3
lea ecx, [ebp - 0xac]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x402411
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f84], al
inc esi
cmp esi, 8
jb 0x402403
lea ecx, [ebp - 0xb4]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x402451
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f78], al
inc esi
cmp esi, 0xc
jb 0x402443
mov ah, byte [0x8a9050]
mov byte [0x8a8f67], 1
xor edi, edi
nop dword [eax]
mov dl, byte [ebp + edi + 0x58]
xor esi, esi
nop word [eax + eax]
movzx ecx, byte [esi + 0x8a8f8c]
inc esi
mov al, byte [ecx*4 + 0x8a9010]
xor al, byte [ecx*4 + 0x8a9012]
xor al, byte [ecx*4 + 0x8a9011]
xor dl, al
xor dl, byte [ecx*4 + 0x8a9013]
cmp esi, 4
jb 0x402490
xor esi, esi
nop dword [eax]
movzx ecx, byte [esi + 0x8a8f84]
inc esi
mov al, byte [ecx*4 + 0x8a8fd0]
xor al, byte [ecx*4 + 0x8a8fd2]
xor al, byte [ecx*4 + 0x8a8fd1]
xor dl, al
xor dl, byte [ecx*4 + 0x8a8fd3]
cmp esi, 8
jb 0x4024c0
xor esi, esi
nop dword [eax]
movzx ecx, byte [esi + 0x8a8f78]
inc esi
mov al, byte [ecx*4 + 0x8a9010]
xor al, byte [ecx*4 + 0x8a9012]
xor al, byte [ecx*4 + 0x8a9011]
xor dl, al
xor dl, byte [ecx*4 + 0x8a9013]
cmp esi, 0xc
jb 0x4024f0
mov byte [ebp + edi + 0x58], dl
inc edi
cmp edi, 4
jb 0x402480
cmp byte [0x8a9051], 0
mov dword [ebp + 0x54], 0
jne 0x40254a
mov dword [0x8a9454], 0x401650
mov byte [0x8a9051], 1
mov ecx, dword [ebp + 0x58]
mov dword [ebp + 0x5c], ecx
test ah, ah
jne 0x402581
mov edx, 0xfeeddccb
mov ecx, 0x8a9058
nop
mov eax, edx
sub edx, 0xffff
xor eax, 0xababdbf3
mov dword [ecx], eax
add ecx, 4
cmp ecx, 0x8a9454
jl 0x402560
mov byte [0x8a9050], 1
mov dword [ebp + 0x60], 0xfae9e8d7
xor esi, esi
mov dl, 0xd7
nop dword [eax]
mov cl, byte [ebp + esi + 0x5c]
inc esi
xor byte [ebp + 0x61], cl
mov al, cl
xor byte [ebp + 0x62], cl
xor al, dl
xor byte [ebp + 0x63], cl
not cl
mov byte [ebp + 0x60], al
movzx eax, cl
mov edx, dword [eax*4 + 0x8a9058]
xor edx, dword [ebp + 0x60]
mov dword [ebp + 0x60], edx
cmp esi, 4
jb 0x402590
mov al, dl
mov dword [ebp + 0x40], 4
xor al, 4
mov dword [ebp + 0x5c], edx
mov byte [ebp + 0x60], al
mov eax, dword [ebp + 0x60]
mov byte [ebp + 0x40], 4
mov edx, dword [ebp + 0x40]
mov ecx, edx
shl ecx, 0x18
xor eax, ecx
mov dword [ebp + 0x44], 4
mov dword [ebp + 0x60], eax
shr eax, 8
xor al, 0xcc
mov byte [ebp + 0x44], 4
mov esi, dword [ebp + 0x44]
mov ecx, esi
mov byte [ebp + 0x61], al
mov eax, dword [ebp + 0x60]
shl ecx, 0x18
xor eax, ecx
shl edx, 0x10
mov ecx, dword [ebp + 0x58]
mov dword [ebp + 0x60], eax
shr eax, 0x10
mov byte [ebp + 0x62], al
mov eax, dword [ebp + 0x60]
xor eax, edx
movzx ecx, cl
mov dword [ebp + 0x60], eax
neg ecx
shr eax, 0x18
xor al, 0xae
shl ecx, 7
mov byte [ebp + 0x63], al
movzx eax, byte [ebp + 0x5b]
imul eax, eax, 0xff
shl esi, 8
xor esi, dword [ebp + 0x60]
and esi, dword [ebp + 0x5c]
sub ecx, eax
dec ecx
xor ecx, esi
cmp byte [0x8a9052], 0
mov dword [ebp + 0x54], ecx
jne 0x40265d
mov dword [0x8a9454], 0x401650
mov byte [0x8a9052], 1
cmp byte [0x8a8f67], 0
mov dword [ebp + 0x58], 0
jne 0x4027f4
xor esi, esi
mov dword [ebp + 0x60], esi
lea ecx, [ebp + 0x48]
call fcn.00401410
call ebx
cdq
push edx
push eax
push dword [ebp + 0x4c]
push dword [ebp + 0x48]
call fcn.00528990
push 0
push 0x10
push edx
push eax
call fcn.00528990
inc eax
lea ecx, [ebp - 0xbc]
xor eax, 0x10
shl eax, 0xa
or eax, 0x1010101
mov dword [esi + 0x8a9010], eax
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x20
push edx
push eax
call fcn.00528990
mov ecx, dword [ebp + 0x60]
inc eax
xor eax, 0x20
shl eax, 0xb
or eax, 0x1010101
mov dword [ecx + 0x8a8fd0], eax
lea ecx, [ebp - 0xc4]
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp + 0x48], edi
mov dword [ebp + 0x4c], esi
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x40
push edx
push eax
call fcn.00528990
mov esi, dword [ebp + 0x60]
inc eax
xor eax, 0x40
shl eax, 0xc
or eax, 0x1010101
mov dword [esi + 0x8a8f90], eax
add esi, 4
mov dword [ebp + 0x60], esi
cmp esi, 0x40
jl 0x402676
lea ecx, [ebp + 0x48]
call fcn.00401410
mov edi, dword [ebp + 0x4c]
xor esi, esi
call ebx
and eax, 0x8000000f
jns 0x402753
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push edi
push dword [ebp + 0x48]
call fcn.00528990
mov byte [esi + 0x8a8f8c], al
inc esi
cmp esi, 4
jb 0x402745
lea ecx, [ebp - 0xcc]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x402793
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f84], al
inc esi
cmp esi, 8
jb 0x402785
lea ecx, [ebp + 0x30]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x5c], eax
call ebx
and eax, 0x8000000f
jns 0x4027d0
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x5c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f78], al
inc esi
cmp esi, 0xc
jb 0x4027c2
mov byte [0x8a8f67], 1
xor edi, edi
nop word [eax + eax]
mov dl, byte [ebp + edi + 0x58]
xor esi, esi
nop word [eax + eax]
movzx ecx, byte [esi + 0x8a8f8c]
inc esi
mov al, byte [ecx*4 + 0x8a9010]
xor al, byte [ecx*4 + 0x8a9012]
xor al, byte [ecx*4 + 0x8a9011]
xor dl, al
xor dl, byte [ecx*4 + 0x8a9013]
cmp esi, 4
jb 0x402810
xor esi, esi
nop dword [eax]
movzx ecx, byte [esi + 0x8a8f84]
inc esi
mov al, byte [ecx*4 + 0x8a8fd0]
xor al, byte [ecx*4 + 0x8a8fd2]
xor al, byte [ecx*4 + 0x8a8fd1]
xor dl, al
xor dl, byte [ecx*4 + 0x8a8fd3]
cmp esi, 8
jb 0x402840
xor esi, esi
nop dword [eax]
movzx ecx, byte [esi + 0x8a8f78]
inc esi
mov al, byte [ecx*4 + 0x8a9010]
xor al, byte [ecx*4 + 0x8a9012]
xor al, byte [ecx*4 + 0x8a9011]
xor dl, al
xor dl, byte [ecx*4 + 0x8a9013]
cmp esi, 0xc
jb 0x402870
mov byte [ebp + edi + 0x58], dl
inc edi
cmp edi, 4
jb 0x402800
cmp byte [0x8a9050], 0
mov eax, dword [ebp + 0x58]
mov dword [ebp + 0x5c], eax
jne 0x4028e3
mov edx, 0xfeeddccb
mov ecx, 0x8a9058
mov eax, edx
sub edx, 0xffff
xor eax, 0xababdbf3
mov dword [ecx], eax
add ecx, 4
cmp ecx, 0x8a9454
jl 0x4028c2
mov byte [0x8a9050], 1
mov dword [ebp + 0x60], 0xfae9e8d7
xor edx, edx
mov cl, 0xd7
nop
mov al, byte [ebp + edx + 0x5c]
inc edx
xor byte [ebp + 0x61], al
xor cl, al
xor byte [ebp + 0x62], al
xor byte [ebp + 0x63], al
not al
movzx eax, al
mov byte [ebp + 0x60], cl
mov ecx, dword [eax*4 + 0x8a9058]
xor ecx, dword [ebp + 0x60]
mov dword [ebp + 0x60], ecx
cmp edx, 4
jb 0x4028f0
mov al, cl
mov dword [ebp + 0x5c], ecx
xor al, 4
mov dword [ebp + 0x40], 4
mov byte [ebp + 0x60], al
mov eax, dword [ebp + 0x60]
mov byte [ebp + 0x40], 4
mov edx, dword [ebp + 0x40]
mov ecx, edx
shl ecx, 0x18
xor eax, ecx
mov dword [ebp + 0x44], 4
mov dword [ebp + 0x60], eax
shr eax, 8
xor al, 0xcc
mov byte [ebp + 0x44], 4
mov edi, dword [ebp + 0x44]
mov ecx, edi
mov byte [ebp + 0x61], al
mov eax, dword [ebp + 0x60]
shl ecx, 0x18
xor eax, ecx
shl edx, 0x10
mov dword [ebp + 0x60], eax
shr eax, 0x10
mov byte [ebp + 0x62], al
mov eax, dword [ebp + 0x60]
xor eax, edx
shl edi, 8
mov edx, dword [ebp + 0x58]
mov dword [ebp + 0x60], eax
shr eax, 0x18
xor al, 0xae
mov dword [ebp + 0x50], edx
mov byte [ebp + 0x63], al
movzx eax, byte [ebp + 0x5b]
xor edi, dword [ebp + 0x60]
and edi, dword [ebp + 0x5c]
imul ecx, eax, 0xff
movzx eax, dl
imul eax, eax, 0xffffff80
sub eax, ecx
dec eax
xor edi, eax
mov dword [ebp + 0x4c], eax
cmp byte [0x8a9050], 0
mov dword [ebp + 0x54], edi
jne 0x4029e1
mov edx, 0xfeeddccb
mov ecx, 0x8a9058
nop dword [eax + eax]
mov eax, edx
sub edx, 0xffff
xor eax, 0xababdbf3
mov dword [ecx], eax
add ecx, 4
cmp ecx, 0x8a9454
jl 0x4029c0
mov byte [0x8a9050], 1
mov dword [ebp + 0x60], 0xfae9e8d7
xor edx, edx
mov cl, 0xd7
nop dword [eax]
mov al, byte [ebp + edx + 0x50]
inc edx
xor byte [ebp + 0x61], al
xor cl, al
xor byte [ebp + 0x62], al
xor byte [ebp + 0x63], al
not al
movzx eax, al
mov byte [ebp + 0x60], cl
mov ecx, dword [eax*4 + 0x8a9058]
xor ecx, dword [ebp + 0x60]
mov dword [ebp + 0x60], ecx
cmp edx, 4
jb 0x4029f0
mov al, byte [ebp + 0x44]
mov dword [ebp + 0x5c], 4
mov byte [ebp + 0x5c], al
mov al, byte [ebp + 0x40]
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], 4
mov byte [ebp + 0x3c], al
mov al, cl
mov esi, dword [ebp + 0x3c]
xor al, 4
mov byte [ebp + 0x60], al
mov ecx, esi
mov eax, dword [ebp + 0x60]
shl ecx, 0x18
xor eax, ecx
shl esi, 0x10
mov ecx, dword [ebp + 0x5c]
mov edx, ecx
mov dword [ebp + 0x60], eax
shr eax, 8
xor al, 0xcc
shl edx, 0x18
mov byte [ebp + 0x61], al
mov eax, dword [ebp + 0x60]
xor eax, edx
shl ecx, 8
mov dword [ebp + 0x60], eax
shr eax, 0x10
mov byte [ebp + 0x62], al
mov eax, dword [ebp + 0x60]
xor eax, esi
mov dword [ebp + 0x60], eax
shr eax, 0x18
xor al, 0xae
mov byte [ebp + 0x63], al
xor ecx, dword [ebp + 0x60]
and ecx, dword [ebp + 0x38]
xor ecx, dword [ebp + 0x4c]
cmp ecx, edi
je 0x402aad
mov esi, dword [0x8a9454]
sub esp, 0x28
mov eax, esp
push ecx
push edi
mov ecx, eax
call fcn.00401510
lea ecx, [ebp + 0x50]
call esi
mov eax, dword [ebp + 0x50]
jmp 0x402ab0
mov eax, dword [ebp + 0x58]
cmp byte [0x8a8f67], 0
mov dword [ebp + 0x44], eax
jne 0x402c42
xor esi, esi
mov dword [ebp + 0x40], esi
lea ecx, [ebp + 0x48]
call fcn.00401410
call ebx
cdq
push edx
push eax
push dword [ebp + 0x4c]
push dword [ebp + 0x48]
call fcn.00528990
push 0
push 0x10
push edx
push eax
call fcn.00528990
inc eax
lea ecx, [ebp - 0x5c]
xor eax, 0x10
shl eax, 0xa
or eax, 0x1010101
mov dword [esi + 0x8a9010], eax
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x20
push edx
push eax
call fcn.00528990
mov ecx, dword [ebp + 0x40]
inc eax
xor eax, 0x20
shl eax, 0xb
or eax, 0x1010101
mov dword [ecx + 0x8a8fd0], eax
lea ecx, [ebp - 0x54]
call fcn.00401410
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp + 0x48], edi
mov dword [ebp + 0x4c], esi
call ebx
cdq
push edx
push eax
push esi
push edi
call fcn.00528990
push 0
push 0x40
push edx
push eax
call fcn.00528990
mov esi, dword [ebp + 0x40]
inc eax
xor eax, 0x40
shl eax, 0xc
or eax, 0x1010101
mov dword [esi + 0x8a8f90], eax
add esi, 4
mov dword [ebp + 0x40], esi
cmp esi, 0x40
jl 0x402ac5
lea ecx, [ebp + 0x48]
call fcn.00401410
mov edi, dword [ebp + 0x4c]
xor esi, esi
nop
call ebx
and eax, 0x8000000f
jns 0x402b9e
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push edi
push dword [ebp + 0x48]
call fcn.00528990
mov byte [esi + 0x8a8f8c], al
inc esi
cmp esi, 4
jb 0x402b90
lea ecx, [ebp - 0x4c]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x4c], eax
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x402bde
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x4c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f84], al
inc esi
cmp esi, 8
jb 0x402bd0
lea ecx, [ebp - 0x44]
call fcn.00401410
xor esi, esi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp + 0x4c], eax
nop dword [eax]
call ebx
and eax, 0x8000000f
jns 0x402c1e
dec eax
or eax, 0xfffffff0
inc eax
inc al
movsx eax, al
cdq
push edx
push eax
push dword [ebp + 0x4c]
push edi
call fcn.00528990
mov byte [esi + 0x8a8f78], al
inc esi
cmp esi, 0xc
jb 0x402c10
mov byte [0x8a8f67], 1
xor edi, edi
nop dword [eax]
nop dword [eax + eax]
mov al, byte [ebp + edi + 0x44]
xor esi, esi
nop word [eax + eax]
movzx edx, byte [esi + 0x8a8f8c]
inc esi
mov cl, byte [edx*4 + 0x8a9012]
xor cl, byte [edx*4 + 0x8a9011]
xor cl, byte [edx*4 + 0x8a9010]
xor al, cl
xor al, byte [edx*4 + 0x8a9013]
cmp esi, 4
jb 0x402c60
xor esi, esi
nop dword [eax]
movzx edx, byte [esi + 0x8a8f84]
inc esi
mov cl, byte [edx*4 + 0x8a8fd2]
xor cl, byte [edx*4 + 0x8a8fd1]
xor cl, byte [edx*4 + 0x8a8fd0]
xor al, cl
xor al, byte [edx*4 + 0x8a8fd3]
cmp esi, 8
jb 0x402c90
xor esi, esi
nop dword [eax]
movzx edx, byte [esi + 0x8a8f78]
inc esi
mov cl, byte [edx*4 + 0x8a9010]
xor cl, byte [edx*4 + 0x8a9012]
xor cl, byte [edx*4 + 0x8a9011]
xor al, cl
xor al, byte [edx*4 + 0x8a9013]
cmp esi, 0xc
jb 0x402cc0
mov byte [ebp + edi + 0x44], al
inc edi
cmp edi, 4
jb 0x402c50
push str.GetConsoleWindow
lea ecx, [ebp]
call fcn.00406030
push 0x758ba8
lea ecx, [ebp - 0x24]
call fcn.00406030
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmovae eax, dword [ebp - 0x24]
push eax
call esi
cmp dword [ebp + 0x14], 0x10
lea ecx, [ebp]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmovae ecx, dword [ebp]
push ecx
push eax
call edi
call eax
mov ecx, dword [ebp - 0x10]
mov ebx, eax
cmp ecx, 0x10
jb 0x402d74
mov edx, dword [ebp - 0x24]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x402d6a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e71
push ecx
push edx
call fcn.005277e2
add esp, 8
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
cmp ecx, 0x10
jb 0x402dba
mov edx, dword [ebp]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x402db0
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e71
push ecx
push edx
call fcn.005277e2
add esp, 8
push str.ShowWindow
lea ecx, [ebp - 0x3c]
mov dword [ebp + 0x10], 0
mov dword [ebp + 0x14], 0xf
mov byte [ebp], 0
call fcn.00406030
push str.USER32.dll
lea ecx, [ebp + 0x18]
call fcn.00406030
cmp dword [ebp + 0x2c], 0x10
lea eax, [ebp + 0x18]
cmovae eax, dword [ebp + 0x18]
push eax
call esi
cmp dword [ebp - 0x28], 0x10
lea ecx, [ebp - 0x3c]
cmovae ecx, dword [ebp - 0x3c]
push ecx
push eax
call edi
push dword [ebp + 0x44]
push ebx
call eax
mov ecx, dword [ebp + 0x2c]
cmp ecx, 0x10
jb 0x402e39
mov edx, dword [ebp + 0x18]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x402e2f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402e71
push ecx
push edx
call fcn.005277e2
add esp, 8
mov ecx, dword [ebp - 0x28]
mov dword [ebp + 0x28], 0
mov dword [ebp + 0x2c], 0xf
mov byte [ebp + 0x18], 0
cmp ecx, 0x10
jb 0x402e81
mov edx, dword [ebp - 0x3c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x402e77
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x402e77
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.005277e2
add esp, 8
lea ecx, [ebp + 0x50]
call fcn.00401690
lea ecx, [ebp + 0x30]
call fcn.00401690
lea ecx, [ebp + 0x30]
call fcn.00401690
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
lea esp, [ebp + 0x64]
pop ebp
ret