Function at 0x40b080
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp - 0x53]
mov eax, dword [esi - 0x79]
mov ecx, dword [esi + 0x14]
or eax, ecx
mov dword [ebp + 0x10], 0x6e00b500
jne 0x40b10d
mov cl, 0x46
or byte [eax + eax*8 + 0x568b6a74], al
add al, 0x8d
dec ebp
or byte [edx - 0x5c], ch
push ecx
push 0
mov byte [0x52006af0], al
call dword [0xe6c00c]
test eax, eax
or esi, dword [0xc0983543]
fiadd dword [eax]
int3
adc dword [ecx], eax
add byte [ebx + 0x5e5fd769], cl
mov dword [ecx], 0x86
pop ebp
ret
or eax, 0xc0850c23
fcmovne st(0), st(3)
mov cl, byte [esi + 8]
test cl, cl
inc ebp
mov edi, 0x89504e8b
arpl word [eax], cx
inc esi
push eax
mov edx, dword [esi + 0x1e]
mov ecx, 0x20
call fcn.0040b810
mov edx, dword [esi + 0xc]
mov dword [edx + 0xc], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [edi + 0x2f]
push ebx
jb 0x40b0e2
adc byte [eax - 0x75], dl
inc esi
add al, 0x51
xchg ecx, eax
push edx
push eax
call dword [0x8340c010]
test dword [edi - 0x3f88f88c], eax
shr byte [ebx], cl
lcall 0xc098, 0x3da80084
inc eax
add bh, bh
fild dword [ebp + 0xa840f90]
add dword [ebp + 0x5f4d000], ecx
sbb byte [eax + 0xa], 0
out dx, al
sti
add byte [ebx], cl
in eax, 0xf
test eax, ebx
add byte [eax], al
add byte [ebx - 0x1a3f63e3], cl
add byte [ebx + 0x468b148f], cl
adc byte [ebp + 0x7f167cc9], al
add al, 0x85
ror byte [edi + 0x10], 0x6a
add byte [eax - 0x18], ch
add eax, dword [eax]
add byte [ecx + 0x50], dl
mov ecx, dword [edi + 0x10468b14]
test ecx, ecx
jl 0x40b1a2
jg 0x40b192
test eax, eax
dec edi
adc byte [edx], ch
push 0
push 0x3e8
push ecx
push eax
call 0xca8bb573
dec edx
xor al, 0x23
rol dword [ebx - 0x608a0008], 0xb
shr bl, 2
xor eax, eax
and eax, ecx
cmp eax, 0xffffffff
jne 0x40b148
or eax, eax
jmp 0x40b1af
call 0x2e914302
lds edx, [eax]
push edx
call ebx
mov edi, eax
cmp edi, 0x6d0080
je 0x40b182
test edi, edi
cmc
xor dword [eax], ebx
or dword [ecx], eax
mov ebx, dword [esi + 4]
test eax, eax
jne 0x40b1eb
push eax
push 0xfc00ec
push eax
call 0x3d3ffc40
out 0xa, al
mov ah, byte [ebx + 0x410960]
test eax, eax
sub edx, dword [ebx + edx*2 - 1]
push ebx
call eax
jmp 0x40b1f8
shr bl, 1
or byte [edx + 0x56], ch
dec dword [eax - 0xfbb59b4]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 4]
rol dword [ebp + 0x10], cl
push 0x52518301
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x40b214
xor eax, eax
int 0x71
popfd
sbb eax, sym.imp.KERNEL32.dll_GetLastError
call ebx
test eax, eax
je 0x40b285
xlatb
rol dword [0xafc80], cl
cmp eax, 0x150b0027
je 0x40b1eb
cmp eax, 0xd00b0063
jne 0x40b24f
add al, 0xff
add al, byte [ecx]
add eax, 0x8b265700
dec ebp
pop edx
mov edx, dword [ebp + 0x10]
pop ebx
mov ch, 0x9a
ja 0x40b259
add dword [eax], eax
mov dword [ecx], edx
pop esi
pop ebp
ret
or eax, 0xafced
jne 0x40b268
popal
dec ebp
adc al, 0x8b
push ebp
adc byte [edx], bl
and byte [ebp + 0x7f0111fc], ah
mov dword [ecx], edx
pop esi
cmp eax, 0x8a2e2ec3
or al, byte [eax]
jne 0x40b281
mov edx, dword [ebp + 0x10]
sbb ah, byte [eax]
movsd dword es:[edi], dword [esi]
cld
adc dword [ecx], eax
jg 0x40b1ed
adc dword [esi + 0x3d], ebx
ret
mov cl, byte cs:[edx]
add byte [ebp + 0x12], dh
mov ecx, dword [ebp - 0x7b]
inc eax
push ebp
adc bl, dl
pop edi
mov eax, 0xbd91117e
mov esp, esi
pop ebx
test bl, 0x85
sal byte [ebp + 0x38], 0x98
test eax, eax
jne 0x40b2bd
cwde
dec ebp
adc dl, bl
leave
jne 0x40b29e
mov ecx, dword [ebp + 0x14]
dec edx
push ebp
adc byte [ebx + 0x5f], bl
mov eax, 0x1947e
mov dword [ecx], edx
pop esi
pop ebp
ret
mov edx, dword [esi + 0xc]
sub eax, 0x8a1874d2
push esi
fiadd word [edx + edx*8 + 0x368b1175]
push eax
add edx, ecx
mov ecx, dword [esi + 0x54]
adc ecx, 0xffffffb8
adc dword [esi + 0x50], edx
dec esi
dec esi
push esp
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
pop ebx
pop edi
mov dword [ecx], edx
pop esi
pop ebp
ret