Function at 0x4039ed
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
push esi
push edi
call fcn.004039bb
movzx esi, byte [ebp - 4]
sub eax, 0x722e6bbe
mov dword [ebp + 0x10], eax
mov ecx, 0x279266ad
mov eax, 0x930d5744
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x48], eax
mov eax, dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp + 0xc]
sub eax, ecx
xor edi, edi
mov edx, 0xd86d9952
mov dword [ebp - 0x1c], 0xffffe549
sub dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], esi
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [ebp - 0x24], eax
mov eax, dword [0x4231dc]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x30], edx
mov byte [ebp - 3], bl
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x50], edx
mov byte [ebp - 4], bl
or eax, edi
or eax, 0x51ff
xor edx, edx
mov ecx, 0x43a7cfeb
div ecx
mov ebx, 0x1ab7
sub ebx, edx
call esi
and eax, 0xfffffe35
imul eax, ebx
and eax, 0x1abc
xor edx, edx
mov ecx, 0x86e85f77
div ecx
mov ebx, edi
mov eax, 0x500c
mov ecx, dword [ebp + 8]
movzx ecx, byte [ecx]
sub ebx, edx
sub ebx, 0x19
add ebx, 0xffffffeb
or ebx, 0xa7cfb3bd
xor edx, edx
div ebx
mov edx, ecx
shl edx, 0x19
shl ecx, 0x17
and eax, edi
add eax, 0x28c
and eax, edx
lea ebx, [eax + ecx]
xor ebx, edi
imul ebx, ebx, 0x65
mov dword [0x4231dc], eax
xor ebx, 0x719512de
call esi
and eax, 0x53
xor edx, edx
or ebx, 0xefe41514
div ebx
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x24]
add ecx, edi
mov dword [ebp - 0x10], ecx
mov cl, byte [ecx + edx]
mov byte [ebp - 2], cl
xor edx, edx
mov ecx, 0xa629b73d
mov dword [0x4231dc], eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 8]
movzx ebx, byte [eax]
mov eax, edi
div ecx
shl ebx, 0x13
xor ebx, eax
call esi
mov ecx, eax
and ecx, ebx
movzx ebx, byte [ebp - 2]
and ecx, 0x588a1cdd
mov eax, 0xcf507a1
sub eax, ecx
xor eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x10]
mov dword [0x4231dc], eax
or eax, 0x67ee4d4c
mov dword [ebp - 0x10], ebx
sub ebx, eax
mov dword [ebp - 0x18], ecx
or ebx, 0x508d373e
call esi
mov edi, eax
and edi, 0xe
add edi, ebx
call esi
and eax, 0x7df5
or edi, 0xc33d384b
xor edx, edx
div edi
mov dword [0x4231dc], eax
movzx edi, byte [ebp + 0x10]
mov ebx, eax
mov dword [ebp - 0xc], edi
call esi
mov ecx, eax
mov eax, dword [ebp - 0x10]
and ecx, 0xdf1ddee7
xor ecx, 0x18
or ecx, 0x9d1d5ae6
xor edx, edx
div ecx
xor edx, edx
mov ecx, eax
and ecx, 0x5060
or ecx, 0xd6172597
mov eax, ebx
div ecx
lea ecx, [edi + 0xa]
imul eax, ecx
and eax, 0x2d
mov dword [0x4231dc], eax
mov ebx, eax
call esi
and eax, 0x1d
or eax, ebx
sub edi, eax
and edi, 0x259f
add edi, 0x693e26e2
mov dword [0x4231dc], edi
mov si, si
xor eax, eax
or eax, dword [ebp - 0x18]
push bx
pop bx
mov ecx, dword [0x4111a4]
or ecx, dword [0x4111a8]
xor ecx, dword [ebp - 0x38]
not ecx
lea ebp, [ebp]
add eax, ecx
lea ebx, [ebx]
mov dl, byte [0x4111ac]
sub dl, byte [0x4111ad]
xor dl, byte [ebp - 0x34]
mov di, di
mov edi, dword [ebp - 0x30]
xor edi, dword [ebp - 0x2c]
and edi, eax
mov ax, ax
mov eax, dword [0x4111b0]
xor eax, dword [ebp - 0x28]
xor eax, edx
not eax
push ebx
pop dword [ebp - 0x3c]
add al, byte [ebp - 3]
mov byte [edi], al
mov eax, dword [ebp - 0xc]
imul eax, dword [0x4231dc]
and eax, 0x58
xor edx, edx
mov ecx, 0xd27ca5f9
div ecx
mov eax, dword [ebp - 0xc]
push 0x70
pop esi
push 0x6b
mov byte [ebp - 1], 0
mov dword [ebp - 8], 8
mov ecx, edx
xor edx, edx
div esi
pop eax
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
imul ecx, edx
sub eax, ecx
xor edx, edx
mov ecx, 0xcb3fff42
div ecx
mov eax, dword [ebp - 0x10]
and eax, 0x1b6
mov dword [ebp - 0x40], eax
mov dword [0x4231dc], edx
call esi
mov ecx, eax
mov eax, dword [ebp - 0xc]
and ecx, 0x30
or ecx, 0x11fb104f
xor edx, edx
div ecx
xor edx, edx
mov ecx, 0xbdb4fefd
and eax, 0x29d62666
div ecx
mov eax, 0x4eada051
mov ecx, edx
xor ecx, dword [ebp - 0x14]
xor edx, edx
or ecx, 0x7cbef586
div ecx
mov edi, eax
and edi, dword [ebp - 0x10]
or edi, dword [ebp - 8]
call esi
mov bl, byte [ebp + 0x10]
and eax, 0x59
xor eax, edi
mov edi, dword [ebp - 0xc]
xor edi, dword [ebp - 0x14]
add eax, 0x7e
dec dword [ebp - 8]
mov cl, byte [ebp - 8]
push dword [ebp - 8]
mov dword [ebp - 0x44], eax
mov al, byte [ebp - 2]
shr bl, cl
shr al, cl
and edi, 5
xor edi, 0x22
and bl, 1
and al, 1
add bl, al
movzx eax, bl
call fcn.004034f8
add eax, dword [ebp - 0x44]
sub edi, dword [ebp - 0x40]
and bl, 1
add edi, eax
mov eax, dword [0x4231dc]
lea eax, [eax + edi + 0x12]
movzx edi, bl
pop ecx
mov dword [0x4231dc], eax
mov dword [ebp - 0x14], edi
call esi
and eax, 0x7f84
or eax, 0x6a
add eax, dword [ebp - 0x10]
or edi, 0x890ee951
xor edx, edx
div edi
mov edi, edx
call esi
mov ecx, eax
and ecx, 0x1063
xor edx, edx
or ecx, 0x43eb4498
mov eax, edi
div ecx
mov al, byte [ebp - 1]
add al, al
add al, bl
mov byte [ebp - 1], al
xor edx, 0x39372805
or edx, dword [ebp - 0xc]
add dword [0x4231dc], edx
call esi
mov ecx, eax
mov eax, dword [ebp - 8]
lea edi, [eax - 0x10]
or edi, 0x7843f1d5
xor edx, edx
and ecx, 0x6717
div edi
mov edi, 0x7990b5cf
sub edi, eax
or edi, 0xe8c5290
xor edx, edx
mov eax, ecx
div edi
imul eax, dword [ebp - 0x14]
imul eax, eax, 0x4c
add dword [0x4231dc], eax
cmp dword [ebp - 8], 0
jne 0x403c72
movzx edi, bl
mov dword [ebp - 0x14], edi
call esi
mov ecx, eax
mov eax, dword [ebp - 0xc]
and ecx, 0x48
xor edx, edx
or ecx, 0x24313293
div ecx
xor edx, edx
mov ecx, 0x55af5eef
imul eax, edi
and eax, 0x6b56b4d1
div ecx
mov eax, dword [ebp - 0x18]
mov al, byte [eax]
add al, byte [ebp - 1]
movzx eax, al
mov dword [ebp - 0x44], eax
neg edx
add dword [0x4231dc], edx
mov si, si
xor eax, eax
or eax, dword [ebp - 0x18]
push bx
pop bx
mov ecx, dword [0x4111a4]
or ecx, dword [0x4111a8]
xor ecx, dword [ebp - 0x54]
not ecx
lea ebp, [ebp]
add eax, ecx
lea ebx, [ebx]
mov dl, byte [0x4111ac]
sub dl, byte [0x4111ad]
xor dl, byte [ebp - 0x44]
mov di, di
mov edi, dword [ebp - 0x50]
xor edi, dword [ebp - 0x4c]
and edi, eax
mov ax, ax
mov eax, dword [0x4111b0]
xor eax, dword [ebp - 0x48]
xor eax, edx
not eax
push ebx
pop dword [ebp - 0x58]
add al, byte [ebp - 4]
mov byte [edi], al
mov ecx, dword [ebp - 0x10]
mov eax, dword [0x4231dc]
xor edx, edx
or ecx, 0xce193f78
div ecx
xor edx, edx
mov ecx, 0x4e5d66ff
or eax, 0x660e992
xor eax, 0x1f82873c
div ecx
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
imul edx, ecx
mov dword [0x4231dc], edx
jmp loc.00435648