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]
add eax, 0x18660d93
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
call fcn.004035b3
mov ecx, dword [ebp + 0x10]
lea edx, [ecx - 0x2f]
and edx, 0x154f1937
xor edx, 0x1d
imul eax, edx
mov dword [0x4231dc], eax
mov edi, ecx
or ecx, 0x920f2a17
add eax, 0x4e
xor edx, edx
div ecx
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
xor edi, 0xcb6b3a76
lea ebx, [edi - 0x359d60a1]
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x44], edx
call esi
and eax, 0x541a4004
add ebx, 0x2f071e11
mov ecx, edi
sub ecx, eax
or ebx, 0x5c852f8f
xor edx, edx
mov eax, 0x1aef6f04
div ebx
sub ecx, dword [ebp - 0x44]
xor edx, edx
mov ebx, eax
imul ebx, edi
or ebx, 0xe180f247
mov eax, ecx
div ebx
mov ebx, dword [ebp - 0x40]
mov dword [ebp + 0x10], ebx
mov dword [0x4231dc], eax
mov edi, eax
call esi
mov ecx, eax
and ecx, 0x10210449
or ecx, 0xfc26a36
mov eax, 0x75ed
xor edx, edx
div ecx
mov ecx, eax
mov eax, 0x473c8e93
sub eax, ecx
xor edx, edx
or eax, ebx
or edi, 0x2de61008
div edi
push 0x19
pop ecx
or edx, 0x7383
mov dword [0x4231dc], edx
mov eax, edx
xor edx, edx
div ecx
mov edi, eax
call esi
mov ecx, dword [ebp - 0x1c]
and eax, edi
mov edi, dword [ebp - 0x20]
and eax, 0x18438002
or eax, 0x69c8
imul eax, ebx
inc edi
add ecx, edi
add ecx, dword [ebp + 0xc]
mov dword [0x4231dc], eax
mov dword [ebp - 0x20], edi
jne 0x403a61
movzx eax, byte [ebp - 2]
push ebx
push eax
call fcn.004035fe
pop ecx
pop ecx
pop edi
pop esi
pop ebx
leave
ret