Function at 0x40b380
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, dword [esp + 0x38]
push edi
mov edi, dword [esp + 0x40]
mov eax, dword [edi + 4]
xor ebx, ebx
mov dword [esp + 0x14], ebx
mov edx, dword [eax]
mov ecx, dword [edx]
cmp ecx, 0x22
jne 0x40b53d
mov ecx, 1
cmp dword [esi + 0xec], ecx
je 0x430a9e
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
cmp word [edx + 8], 0x7f
je 0x40b513
xor eax, eax
push 0xffffffffffffffff
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ecx
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x1c]
push ecx
push edi
mov ecx, esi
call fcn.0040ab50
test eax, eax
jne 0x430ab3
mov eax, dword [esi]
mov ebx, dword [eax + 4]
add ebx, esi
cmp byte [ebx + 0xd], 0
jne 0x430ac1
mov ebp, dword [ebx + 8]
lea edx, [esp + 0x28]
cmp ebp, edx
je 0x40b4a0
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x430acc
mov eax, dword [ebp + 8]
cmp eax, 8
je 0x430ade
cmp eax, 0xa
je 0x430b01
cmp eax, 5
je 0x430b17
cmp eax, 0xb
je 0x430b23
cmp eax, 0xc
je 0x430b43
mov dword [ebp + 8], 1
mov dword [ebp], 0
mov ecx, dword [esp + 0x30]
mov dword [ebp + 8], ecx
mov eax, dword [esp + 0x30]
cmp eax, 4
jne 0x430b59
push 0x10
call fcn.0041171a
add esp, 4
test eax, eax
je 0x430d08
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov ecx, dword [ecx + 0xc]
mov dword [eax + 0xc], ecx
inc dword [ecx]
mov dword [ebp + 0xc], eax
cmp byte [ebx + 0xd], 0
jne 0x430d0f
mov ebx, dword [ebx + 8]
mov byte [ebx + 0x10], 1
mov eax, dword [esp + 0x34]
test eax, eax
je 0x40b4de
lea esi, [eax + 0xc]
mov edi, eax
mov eax, dword [esi]
dec dword [eax]
mov ecx, dword [esi]
cmp dword [ecx], 0
je 0x430d1a
push edi
call fcn.004112ef
add esp, 4
mov dword [esp + 0x34], 0
mov eax, dword [esp + 0x30]
cmp eax, 8
je 0x430d35
cmp eax, 0xa
je 0x430d5a
cmp eax, 5
je 0x430d71
cmp eax, 0xb
je 0x430d7f
cmp eax, 0xc
je 0x430da1
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 4]
mov eax, dword [eax + ecx*4]
cmp word [eax + 8], 0x7f
jne 0x430db8
mov eax, dword [esp + 0x3c]
mov byte [eax + 0x144], 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
sub ecx, 4
cmp ecx, 0x26
ja case.0x40b549.5
jmp dword [ecx*4 + 0x40b758]
lea eax, [esi + 0x16c]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], ebx
mov dword [esp + 0x3c], eax
cmp byte [eax + 9], bl
jne 0x430305
mov edi, dword [eax + 4]
cmp dword [edi + 0x28], 8
mov ebp, dword [edi + 0xc]
je 0x430310
cmp dword [edi + 0x18], 5
je 0x430366
lea esi, [edi + 0x20]
mov eax, esi
mov ecx, ebp
call fcn.0040b910
mov eax, dword [esp + 0x34]
cmp eax, ebx
jne 0x4303fc
mov eax, dword [esp + 0x30]
cmp eax, 8
je 0x43040b
cmp eax, 0xa
je 0x430430
cmp eax, 5
je 0x430447
cmp eax, 0xb
je 0x430455
cmp eax, 0xc
je 0x430477
fldz
mov dword [esp + 0x30], 3
fld st(0)
fst qword [esp + 0x28]
mov eax, dword [esi + 8]
lea ecx, [eax + eax*2]
shl ecx, 4
mov ecx, dword [ecx + 0x4923d4]
cmp ecx, 3
jne 0x43048e
cmp eax, 1
jne 0x430548
fstp st(1)
fild dword [esi]
fcompp
fnstsw ax
test ah, 5
jnp 0x4304c3
mov eax, dword [edi + 0x18]
mov edx, dword [ebp + 8]
lea esi, [edi + 0x10]
lea ecx, [eax + eax*2]
lea ecx, [edx + ecx*4]
mov ecx, dword [ecx*4 + 0x4923c8]
cmp ecx, 1
jne 0x430610
cmp eax, 1
jne 0x430747
mov esi, dword [esi]
mov eax, dword [ebp + 8]
cmp eax, 1
jne 0x430802
mov eax, dword [ebp]
cmp esi, eax
jl 0x40b6cd
mov ecx, dword [edi + 4]
mov edx, dword [esp + 0x44]
inc ecx
mov dword [edx], ecx
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
cmp ecx, ebx
jne 0x4308bd
cmp eax, 8
je 0x4308d0
cmp eax, 0xa
je 0x4308f5
cmp eax, 5
je 0x43090c
cmp eax, 0xb
je 0x43091a
cmp eax, 0xc
jne 0x40b533
jmp 0x43093c
mov eax, dword [esp + 0x44]
push eax
push edi
push esi
call fcn.0040cde0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
mov edx, dword [esp + 0x44]
push edx
push edi
push esi
call fcn.00402270
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
mov edi, dword [esp + 0x3c]
call fcn.0040c8a0
jmp 0x40b65f
lea edi, [esi + 0x16c]
call fcn.0040c8a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
push esi
lea eax, [esp + 0x18]
call fcn.00410750
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
mov ecx, dword [esp + 0x44]
push ecx
push edi
mov eax, esi
call fcn.0040e990
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
mov ecx, dword [esp + 0x44]
push ecx
call fcn.0040f2c0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
mov eax, dword [esp + 0x44]
push eax
push edi
mov eax, esi
call fcn.0040ea10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
mov eax, dword [esp + 0x44]
push esi
call fcn.0040f200
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc
mov ebp, 0x5050538
imul ecx, dword [esi + 0x4edf18a], 4
mov esi, 0x5050537
imul ecx, dword [esi + 0x4edf392], 4
mov edi, 0x5050533
imul ecx, dword [esi + 0x4edf59a], 4
add al, 0xbd
imul eax, dword [0x8e6b0505], 0x4edf78a
add al, 0xbe
jno 0x4302f8
add eax, 0x928e6b05
stc
in eax, dx
add al, 4
add al, 0xbd
imul eax, dword [0x8e6b0505], 0x4edf78a
add al, 0xbe
jno 0x4302f8
add eax, 0x928e6b05
add eax, 0xf9928e6b
stc
in eax, dx
add al, 4
mov edi, 0x5050571
imul ecx, dword [esi + 0x4edfb9a], 4
in eax, dx
add al, 4
cmp ch, al
imul ecx, dword [esi + 0x4edfd8a], 4
pop esp
add al, 0x5c
push edi
mov cl, cl
or eax, esi
or dl, byte [eax + 0x46]
dec edx
inc esi
cmp dword [esi + 0x5ce0bf4], eax
add eax, 0x88585664
leave
or dword [esi + 0x55d0dee], eax
add eax, 0x4e520af0
aas
inc ebx
inc edi
xchg dh, ah
mov es, word [ebp + 5]
add eax, 0xc5fae686
add eax, 0x8acb5e05
mov ch, 0xfc
add al, 4
push ecx
retf
retf
add al, 4
add eax, 0x8acc147a
movsd dword es:[edi], dword [esi]
std
add al, 4
add eax, 0xee050505
out dx, al
lodsb al, byte [esi]
pop es
add eax, 0xd9a9005
out dx, eax
add al, 4
nop
inc edi
adc dword [eax - 0x6d71eeb3], edx
push ecx
clc
add al, 4
push ebp
push edi
mov cl, cl
or dword [esi + 0x53e54e5], eax
add eax, 0xe7c4e586
add eax, 0x865b5d05
inc esi
out 5, eax
add eax, 0xf3865b5d
inc esi
push es
add eax, 0x7718cb86
add eax, 0x57566305
mov cl, cl
or dword [esi + 0x5f957ee], eax
add eax, 0x4ce6ee86
xchg dh, ch
push edi
stc
add eax, 0xe6ee8605
dec esp
add eax, 0xc2885e05
push ecx
clc
add al, 4
add eax, 0x8acc147a
movsd dword es:[edi], dword [esi]
std
add al, 4
add eax, 0xee050505
push eax
pop es
add eax, 0x519a9005
clc
add al, 4
mov ds, word [edx + 0x404fffd]
push edi
ret 0xf851
add al, 0x57
lock or dword [ebp + 0x39], edx
cmp dword [eax + 0x5f], ecx
push ebp
in eax, dx
adc byte [0x53050505], al
push eax
inc esp
cmp al, 0x3a
inc ebp
push eax
dec ebx
cmp al, 0x88
leave
or eax, esi
or dword [ecx + 0x47], ecx
dec ebx
inc ecx
invalid
add al, 4
cmp ch, al
imul ecx, dword [esi + 0x402e58a], 4
cmp dh, cl
imul ecx, dword [esi + 0x565bb152], 0xffffff88
leave
or dword [esi + 0x5d67ef3], eax
add eax, 0x20c8eb86
push es
add eax, 0x88565c63
leave
or dword [esi + 0x68556d4], eax
add eax, 0xabaff486
add eax, 0x3dcc8605
dec ebp
push es
add eax, 0x3e3a0bf0
inc ebx
dec edi
dec eax
dec ecx
nop
lcall 0x906b, 0x404f859
pop es
imul ecx, dword [esi + 0x4f55f8a], 4
nop
xchg edx, eax
pop ecx
clc
add al, 4
mov dh, al
pop es
mov ss, word [edx + 0x404f859]
imul edx, dword [eax + 0x4f55f9a], 4
imul ecx, dword [esi + 0x402e59a], 4
nop
mov dl, byte [ebp - 8]
add al, 4
imul edx, dword [eax - 0x6d7194f3], 0x5d
cmc
add al, 4
nop
lcall 0xc788, 0x404f855
pop es
mov ds, word [edx + 0x404f855]
add al, 0x88
mov dword [edi], 0xf8559a8e
add al, 4
imul edx, dword [eax + 0x4f55d8a], 4
imul ecx, dword [esi - 0x79a34eb6], 0xffffffec
inc esp
iretd
pop esp
mov cl, cl
or dword [esi + 0x5ad46f6], eax
add eax, 0xf812c686
add eax, 0xed5b5e05
push cs
add eax, 0x3a050505
push eax
dec ebp
dec edi
push ebp
inc edx
push edx
push edx
mov cl, cl
or eax, esi
or al, byte [ebp + 0x49]
aas
push esp
dec ebx
xchg bl, bh
aad 1
add eax, 0x9a906305
std
inc dword [esp + eax]
mov ds, word [edx + 0x404fda5]
invalid
lodsd eax, dword [esi]
add eax, 0x50fed05
add eax, 0x3a400505
aas
inc edi
inc edx
dec edi
dec esp
dec esp
mov cl, cl
or dword [ebx + ebx*2 - 0x7a], esp
sal dword [esi + esi - 0x6f9cfafb], cl
xchg edx, eax
movsd dword es:[edi], dword [esi]
std
add al, 4
nop
push esi
sbb eax, 0x1859a8e
add al, 4
int3
add al, 4
or byte [edx + 0x404eef9], dl
mov ss, word [edx + 0x404fda1]
jp 0x430828
nop
lcall 0x9a8e, 0x404fd95
push ebp
add dword [esp + eax], eax
out dx, al
ja 0x430828
add eax, 0xa18a9005
std
add al, 4
nop
add al, 0x90
xchg edx, eax
test dword [ecx], eax
add al, 4
or byte [ebp + 0x25], cl
mov ss, word [edx + 0x404eb91]
nop
lcall 0x8a90, 0x404fda1
test dword [ecx], eax
add al, 4
or byte [edi + 0x29], al
mov cs, word [edx + 0x404eb8d]
nop
xchg edx, eax
mov eax, dword [0x900404fd]
lcall 0x5608, 0x4040185
and dword [esi + 0x4eb899a], ecx
add al, 0xcc
mov bl, byte [ebp + 0x50404fd]
add eax, 0x14f00505
nop
mov bl, byte [ebp - 0x77fbfb03]
lds eax, [esi]
mov cs, word [edx + 0x404fd9d]
nop
xchg edx, eax
mov eax, dword [0x900404fd]
lcall 0x5640, 0x404fd9d
sbb eax, 0x6fc8814
add eax, 0x9d8a9005
std
add al, 4
nop
xchg edx, eax
xchg ecx, eax
jmp 0x4308a1
add dword [esp + eax], eax
or byte [ecx], bl
xchg byte [esi + 0x4fd999a], cl
add al, 0x90
mov bl, byte [ebp - 0x6ffbfb03]
xchg edx, eax
invalid
nop
mov cl, byte [ecx - 0x6ffbfb15]
xchg edx, eax
test dword [ecx], eax
add al, 4
or byte [ecx], dl
xchg ebp, eax
mov ss, word [edx + 0x404eb85]
add al, 4
int3
insd dword es:[edi], dx
add eax, dword [esp + eax]
adc al, 0xc3
or eax, 0x8914ce8a
mov al, byte [0x90050505]
lcall 0xc314, 0x404036d
mov dword [edx], ebx
mov ch, 0xfc
add al, 4
mov al, ch
adc al, 0x89
mov al, byte [0xed580505]
pop eax
in eax, dx
push cs
add eax, 0x3e050505
dec ecx
push ecx
dec esi
inc ecx
push ebp
push esp
dec edx
mov cl, cl
or dword [esi + 0x59a49f0], eax
add eax, 0x50510ed
add eax, 0x43483c05
inc eax
inc edi
cmp eax, dword [edi + 0x4e]
inc edx
mov cl, cl
or dword [esi + 0x53272f8], eax
add eax, 0x99929060
std
add al, 4
or byte [edx + 0x404036d], dl
xchg edx, eax
insd dword es:[edi], dx
add eax, dword [esp + eax]
xchg edx, eax
insd dword es:[edi], dx
add eax, dword [esp + eax]
adc al, 0xc3
push ss
nop
mov ch, byte [ebp + 3]
add al, 4
adc al, 0xc3
xchg ecx, eax
or dh, byte [ebp + 0x400404fc]
salc
jns 0x430996
nop
lcall 0x9a08, 0x404fd99
insd dword es:[edi], dx
add eax, dword [esp + eax]
adc al, 0xc3
pop es
mov ch, dh
and eax, 0x36d9290
add al, 4
adc al, 0xc3
cdq
adc dh, byte [ebp + 0x400404fc]
inc eax
inc eax
invalid
invalid
or eax, esi
or cl, byte [ebx + 0x4e]
inc ecx
inc ebx
push esp
invalid
sar ch, 1
add byte [esi], 5
pushal
push edi
lock or bh, byte [eax]
push edx
aaa
dec ecx
cmp eax, 0x52500af0
cmp edi, dword [edx]
cmp eax, 0xeeaae786
add eax, 0x8a905f05
cdq
std
add al, 4
or byte [edx + 0x404036d], cl
insd dword es:[edi], dx
add eax, dword [esp + eax]
insd dword es:[edi], dx
add eax, dword [esp + eax]
adc al, 0xc3
or eax, 0x36d9a90
add al, 4
adc al, 0xc3
mov dword [edx], ebx
mov ch, 0xfc
add al, 4
inc eax
int 0x7a
adc esp, ecx
mov cl, byte [ebp - 8]
add al, 4
add eax, 0xf0050505
je 0x430a57
xchg al, dh
or al, 0x33
add eax, 0xcf88605
or eax, 0x55600506
pop eax
mov cl, cl
or dword [esi + 0x5a64fcd], eax
int 0x4f
cmpsb byte [esi], byte es:[edi]
add eax, 0x15c58605
and al, byte [esi]
int 0x4f
cmpsb byte [esi], byte es:[edi]
add eax, 0x15c58605
and al, byte [esi]
add eax, 0x88575b5d
leave
or dword [esi + 0x5775af3], eax
pop edx
ja 0x430a2d
pop edx
ja 0x430a2d
add eax, 0xe8bbfb86
add eax, 0x92906305
nop
xchg edx, eax
cdq
std
add al, 4
or byte [edx + 0x404036d], dl
adc al, 0xc3
push ss
mov bh, cl
and eax, 0x36d8a90
add al, 4
adc al, 0xc3
xchg ecx, eax
or dh, byte [ebp - 0x77fbfb04]
into
and eax, 0x1182d640
int3
add eax, 0xc2880505
dec ebp
clc
add al, 4
add eax, 0x9a90137a
test ebx, ebp
add al, 4
add al, 0x8e
invalid
push ebp
add dword [esp + eax], eax
invalid
add al, 0x8e
lcall 0x16f0, 0x4040155
out dx, al
ljmp 0x958a
std
add al, 4
mov cs, word [edx + 0x4040155]
mov dl, al
push ebp
add dword [esp + eax], eax
add eax, 0x5d38914
add eax, 0x88585b05
leave
rol dword [0x585b0505], cl
mov cl, cl
or dword [esi + 0x655b3d3], eax
add eax, 0xfed5863
add eax, 0x3c050505
dec esi
inc esp
add eax, 0x444e3c05
dec ecx
dec edx
push ebx
push esp
aaa
mov cl, cl
or dword [esi + 0x64bacf0], eax
xchg al, dh
lodsb al, byte [esi]
dec ebx
push es
add eax, 0xbe70f886
add eax, 0xe3d08605
nop
add eax, 0x90e3d086
add eax, 0x92906005
push ebp
add dword [esp + eax], eax
mov ss, word [edx + 0x404eb81]
add al, 4
push esi
pop ebx
mov cl, cl
or eax, esi
or dword [ecx + 0x3b], edx
aaa
inc ebx
xchg dh, al
in eax, dx
sub dword [esi], eax
add eax, 0xec865c5e
push cs
sbb al, 6
add eax, 0xfda7cc86
add eax, 0x89cc8605
test eax, 0x56640505
mov dword [ecx + 0x56640505], ebp
push edi
mov cl, cl
or dword [esi + 0x5a393ee], eax
add eax, 0x819a905e
jmp 0x430b1b
sub ebx, 0x9a8e0404
jge 0x430b07
add al, 0x8e
lcall 0x8a92, 0x404eb7d
dec ecx
jmp 0x430b21
add al, 4
xchg edx, eax
mov cl, byte [ecx - 0xc]
add al, 4
push ebp
hlt
add al, 0x55
add al, 0x9a
jge 0x430b14
add al, 4
mov al, ch
jp 0x430b75
push esi
push ebp
mov cl, cl
or dword [esi + 0x57b83f6], eax
add eax, 0x59dbe686
push es
add eax, 0x9d7ec686
popfd
add eax, 0xf0575e05
or dword [ebp + 0x45], eax
dec edi
push ebx
xchg bh, cl
mov byte ds:[0xef860505], al
cmp dword [edx], esp
add eax, 0xb1c78605
pop edx
add eax, 0x5ab1c786
add eax, 0x8acc5f05
mov ch, 0xfa
add al, 4
add eax, 0xee050505
lock or eax, dword [0xe5865505]
inc ebp
rol byte [0x58565d05], 1
add eax, 0x58565d05
mov cl, cl
or dword [esi + 0x61be7ce], eax
add eax, 0x5050fed
add eax, 0x474a3b05
push ebx
push eax
dec edi
dec ecx
inc esi
inc ebp
mov cl, cl
or dword [esi + 0x5d747c6], eax
add eax, 0xb49e686
add eax, 0x90695e05
xlatb
add eax, 0x49e68605
or eax, dword [0x90695e05]
adc bl, byte [0x8e050505]
xchg edx, eax
jns 0x430b98
add al, 4
nop
lcall 0x4790, 0x404eb79
xor eax, 0xeb758a8e
add al, 4
nop
xchg edx, eax
jne 0x430bad
add al, 4
mov ss, word [edx + 0x404ef45]
push ebp
in eax, dx
push cs
add eax, 0x50050505
inc ebp
dec ecx
push eax
push ebx
inc ecx
push ebx
mov cl, cl
or dword [esi + 0x65102e5], eax
add eax, 0x7be3f586
push es
add eax, 0x50510ed
add eax, 0x464c4905
dec edi
dec ebp
push ebx
inc edi
inc ecx
dec ebx
inc edi
mov cl, cl
or dword [ebp - 0x78], ebx
ret 0xef45
add eax, 0x499a905d
clc
add al, 4
imul edx, dword [eax - 0x757194f9], 0xfffffff3
hlt
add al, 0x6b
nop
pop es
imul ecx, dword [esi + 0x4f4f38a], 4
nop
xchg edx, eax
dec ecx
clc
add al, 4
mov dh, al
pop es
mov ss, word [edx + 0x404f849]
imul edx, dword [eax + 0x4f4f39a], 4
imul ecx, dword [esi + 0x402e19a], 4
add al, 4
nop
mov al, byte [ebp - 8]
add al, 4
imul edx, dword [eax - 0x6d7194f3], 0xfffffff1
hlt
hlt
test byte [esi], al
add eax, 0xb97ad086
add eax, 0x555b6005
mov cl, cl
or dword [esi + 0x631f8cb], eax
add eax, 0x2facf386
push es
add eax, 0x83bff386
add eax, 0xbc146305
push edx
lodsd eax, dword [esi]
mov cl, dh
jp 0x430db5
adc al, 0xbc
lcall 0xbc14, 0x40402e1
dec edx
lodsd eax, dword [esi]
xor ch, dl
add al, 0x14
mov esp, 0xd530ad4a
mov ds, word [edx + 0x404ef21]
invalid
add al, 4
adc al, 0xbc
pop edx
lodsd eax, dword [esi]
inc eax
iretd
mov esp, 0xcf40ad5a
adc al, 0x89
sbb al, byte [esp + eax]
add al, 0x14
mov esp, 0x402e18a
add al, 0x88
cmc
and eax, 0xad52bc14
inc eax
invalid