Function at 0x403626
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
push ebx
push esi
push edi
call fcn.004035f4
movzx edi, byte [ebp - 1]
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
add eax, 0x46a5d688
mov dword [ebp + 0x10], eax
mov eax, 0xb2c3ca97
mov ecx, 0x2ec09189
xor esi, esi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp + 0xc]
mov edx, 0xd13f6e76
sub eax, ecx
mov dword [ebp - 0x28], 0xffffe55a
sub dword [ebp - 0x28], ecx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x44], edx
mov byte [ebp - 5], 0xc
mov byte [ebp - 4], 0xff
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x60], edx
mov byte [ebp - 7], 0xc
mov byte [ebp - 6], 0xff
mov dword [ebp - 0x2c], eax
jmp 0x4036a8
mov esi, dword [ebp - 0x18]
push esi
call fcn.0040329a
mov dword [0x429684], eax
mov eax, esi
call fcn.004032b8
mov dword [0x429684], eax
mov eax, dword [ebp + 8]
movzx edi, byte [eax]
mov ecx, edi
shl ecx, 0x10
push esi
call fcn.00403586
pop ecx
pop ecx
mov dword [0x429684], eax
mov dword [ebp - 0x24], eax
shl edi, 2
call ebx
mov ecx, eax
mov eax, dword [ebp - 0x24]
and ecx, 0x60012180
xor edx, edx
or ecx, 0xf941833
div ecx
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
shl eax, 0x14
push eax
mov ecx, esi
imul edx, edi
xor edx, 0x125a
imul edx, esi
mov dword [0x429684], edx
call fcn.004035af
add esi, dword [ebp + 0xc]
mov dword [0x429684], eax
mov eax, dword [ebp - 0x2c]
mov al, byte [eax + esi]
movzx edi, al
mov byte [ebp - 3], al
pop ecx
mov eax, edi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x10], edi
call fcn.004032d8
mov dword [0x429684], eax
mov esi, eax
call ebx
xor edi, 0xa0
and eax, edi
and eax, 0x47e1
or esi, 0xe2f3608e
xor edx, edx
div esi
movzx esi, byte [ebp + 0x10]
push 0x4b
pop eax
mov dword [ebp - 0x24], esi
sub eax, edx
mov dword [0x429684], eax
and eax, 0x58
xor eax, 0x2f64
mov edi, eax
call ebx
and eax, 0x6fecc05c
imul eax, edi
xor edx, edx
mov ecx, 0x9dfca7bd
div ecx
mov eax, esi
sub eax, edx
mov dword [0x429684], eax
mov eax, esi
call fcn.004032e5
mov dword [0x429684], eax
push bp
pop bp
xor eax, eax
or eax, dword [ebp - 0x20]
lea edx, [edx]
mov ecx, dword [ebp - 0x44]
xor ecx, dword [ebp - 0x40]
and ecx, dword [ebp - 0x3c]
mov sp, sp
add eax, ecx
push si
pop si
mov dl, byte [ebp - 5]
sub dl, byte [0x417650]
xor dl, byte [ebp - 0x38]
mov bp, bp
mov edi, eax
lea ebp, [ebp]
mov eax, dword [ebp - 0x34]
xor eax, dword [ebp - 0x30]
xor eax, edx
mov eax, eax
xor al, byte [ebp - 4]
mov byte [edi], al
not byte [edi]
not al
mov edi, dword [ebp - 0x24]
mov eax, edi
call fcn.00403333
mov ecx, eax
mov dword [0x429684], ecx
mov eax, edi
sub eax, ecx
sub eax, 0x2550
xor edx, edx
mov ecx, 0x794e3f0e
div ecx
mov esi, edx
call ebx
xor edx, edx
or esi, 0x46f2f2eb
mov eax, 0x3d84eab8
div esi
lea ecx, [edi - 0x11]
or ecx, 0xfceed1a8
xor edx, edx
mov dword [ebp - 0x1c], 0x369e
mov byte [ebp - 2], 0
mov dword [ebp - 0xc], 8
mov dword [0x429684], eax
mov eax, dword [ebp - 0x10]
xor eax, 0x2004836d
mov dword [ebp - 0x48], eax
mov eax, 0x6458667b
div ecx
xor eax, 0x238f0f9b
sub dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x10]
or eax, 0x56398cee
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x14]
push edi
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004030c7
add dword [0x429684], eax
add esp, 0xc
dec dword [ebp - 0xc]
call ebx
mov esi, eax
and esi, 0x2b18
or esi, dword [ebp - 0x14]
imul esi, edi
call ebx
and eax, 0x7b0e
xor edx, edx
or esi, 0xd485ebf0
div esi
mov ecx, dword [0x429684]
mov dl, byte [ebp - 3]
push dword [ebp - 0xc]
sub eax, dword [ebp - 0x48]
lea eax, [ecx + eax + 0x138d]
mov cl, byte [ebp - 0xc]
mov dword [0x429684], eax
mov al, byte [ebp + 0x10]
shr al, cl
shr dl, cl
and al, 1
and dl, 1
add al, dl
mov byte [ebp - 1], al
movzx eax, al
push eax
call fcn.004030ec
add dword [0x429684], eax
and byte [ebp - 1], 1
mov eax, dword [ebp - 0x1c]
pop ecx
pop ecx
movzx ecx, byte [ebp - 1]
xor eax, ecx
xor edx, edx
div dword [ebp - 0x4c]
mov al, byte [ebp - 2]
add al, al
add al, byte [ebp - 1]
mov dword [ebp - 0x14], ecx
mov byte [ebp - 2], al
add dword [0x429684], edx
call ebx
mov ecx, dword [ebp - 0xc]
xor ecx, 0x7f
mov edx, 0x2af37d5e
and eax, 0x13
sub edx, ecx
or eax, edx
add dword [0x429684], eax
cmp dword [ebp - 0xc], 0
jne 0x40385e
movzx esi, byte [ebp - 1]
mov dword [ebp - 0x14], esi
call ebx
mov ecx, eax
or esi, 0xf0c37ffd
mov eax, edi
xor edx, edx
div esi
and ecx, 0x6013
or ecx, eax
mov eax, dword [ebp - 0x20]
mov al, byte [eax]
add al, byte [ebp - 2]
xor ecx, 0x3a
add dword [0x429684], ecx
movzx eax, al
mov dword [ebp - 0x4c], eax
push bp
pop bp
xor eax, eax
or eax, dword [ebp - 0x20]
lea edx, [edx]
mov ecx, dword [ebp - 0x60]
xor ecx, dword [ebp - 0x5c]
and ecx, dword [ebp - 0x58]
mov sp, sp
add eax, ecx
push si
pop si
mov dl, byte [ebp - 7]
sub dl, byte [0x417650]
xor dl, byte [ebp - 0x4c]
mov bp, bp
mov edi, eax
lea ebp, [ebp]
mov eax, dword [ebp - 0x54]
xor eax, dword [ebp - 0x50]
xor eax, edx
mov eax, eax
xor al, byte [ebp - 6]
mov byte [edi], al
not byte [edi]
not al
push dword [ebp - 0x10]
mov eax, dword [ebp - 0x24]
call fcn.0040334c
push dword [ebp - 0x24]
mov dword [0x429684], eax
mov eax, dword [ebp - 0x10]
call fcn.00403371
mov ecx, dword [ebp + 0x10]
mov dword [0x429684], eax
call fcn.00403218
mov ecx, dword [ebp + 0x10]
push dword [ebp + 0x10]
mov dword [0x429684], eax
xor ecx, 0x2eb63d03
mov eax, ecx
call fcn.00403230
mov dword [0x429684], eax
lea eax, [ecx - 0x4fdce7cc]
push eax
push ecx
mov dword [ebp + 0x10], eax
call fcn.0040324d
lea ecx, [eax + 0x1f8dbd7]
and ecx, dword [ebp + 0x10]
xor edx, edx
and ecx, 0x6913edc
xor ecx, 0x77
mov dword [0x429684], ecx
imul ecx, ecx, 0xf93
and ecx, 0x1404
or ecx, 0xacfb8a1b
mov eax, 0xcc2b842
div ecx
add esp, 0x14
mov esi, eax
call ebx
xor edx, edx
mov eax, esi
mov ecx, 0xf2c4cfd9
div ecx
mov eax, dword [ebp + 0x10]
sub eax, edx
inc dword [ebp - 0x18]
mov dword [0x429684], eax
mov eax, dword [ebp - 0x28]
add eax, dword [ebp - 0x18]
add eax, dword [ebp + 0xc]
jne 0x4036a5
movzx ecx, byte [ebp - 3]
push dword [ebp + 0x10]
call fcn.004033ad
pop ecx
pop edi
pop esi
pop ebx
leave
ret