Function at 0x180015664
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xe0
mov rax, qword [0x180052d38]
xor rax, rsp
mov qword [rbp + 0x17], rax
mov byte [rbp - 0x60], 0x9d
mov r12, rcx
mov dword [rbp - 0x49], 0xf7
mov r8d, 0x28
mov rax, qword [0x180052690]
xor ebx, ebx
mov byte [rbp - 0x61], al
mov r14, rdx
mov dword [rbp - 0x45], 0x2b45a98a
mov edi, 0x3010
movzx eax, word [0x18005265c]
mov r9d, dword [0x180052688]
mov byte [rbp - 0x65], al
movsx rax, word [0x1800526c0]
mov qword [rbp - 0x29], rax
mov al, byte [0x180052557]
mov byte [rbp - 0x69], al
movzx eax, word [0x180052594]
mov word [rbp - 0x31], ax
movabs rax, 0x3a84a5161b1bd
mov qword [rbp - 0x11], rax
mov dword [rbp - 0x41], 0x15
mov eax, dword [0x1800525fc]
mov qword [rbp - 0x39], rax
movabs rax, 0x5e2c465403c52
mov qword [rbp - 9], rax
mov r10d, dword [0x1800525fc]
mov dword [rbp - 0x55], 0x7257cfc6
movsx eax, byte [0x18005252f]
mov dword [rbp - 0x59], eax
mov dword [rbp - 0x59], 0x694e
movzx eax, word [0x18005269c]
mov rax, qword [0x1800526b8]
add byte [0x18005252b], 0x38
mov eax, 0xbe
mov qword [rbp - 0x19], 0xbcec
mov qword [rbp - 0x19], 0xfd
mov byte [rbp - 0x65], 0xed
mov byte [rbp - 0x65], Ordinal_138
mov word [rbp - 0x65], ax
movzx eax, word [0x1800526c8]
mov word [rbp - 0x65], ax
movsx rax, word [0x1800526b4]
mov qword [rbp - 0x19], rax
movzx eax, word [0x18005266c]
mov qword [rbp - 0x19], rax
mov rax, qword [0x1800526a8]
mov dword [rbp - 0x59], 0x4cc1241d
mov qword [rbp - 0x19], rax
mov eax, dword [0x1805c83a0]
mov qword [rbp - 0x19], 0x778a
mov dword [rbp - 0x65], eax
mov rax, qword [rbp - 0x39]
movsx ecx, al
imul eax, ecx, 0x59
mov qword [rbp - 1], rdx
mov dword [rbp - 0x2d], r10d
mov byte [0x180052557], al
mov eax, dword [rbp - 0x65]
add eax, 0x89
mov dword [rbp - 0x59], eax
mov eax, 0xef6f
mov word [0x180052668], ax
movsx eax, byte [0x1800526c8]
imul ecx, eax, 0x34
mov eax, dword [rbp - 0x65]
add eax, 0xde
mov dword [rbp - 0x3d], eax
mov rax, qword [0x180052670]
sub r8b, cl
mov dword [rbp - 0x51], r8d
test rax, rax
je 0x180015855
movsx rax, word [0x180052698]
cmp qword [0x180052650], rax
jle 0x180015882
movzx eax, word [0x18005269c]
mov ecx, ebx
test ax, ax
mov edx, 0xa3ab
mov eax, dword [0x180052648]
sete cl
not eax
sub eax, ecx
mov ecx, ebx
cmp word [0x18005266c], dx
cmove ecx, eax
mov eax, dword [rbp - 0x41]
imul eax, ecx
mov dword [0x18005267c], eax
jmp 0x180015882
cmp word [0x18005266c], bx
je 0x180015868
mov ecx, 1
test r9d, r9d
jne 0x18001586a
mov ecx, ebx
mov eax, dword [rbp - 0x55]
or eax, ecx
je 0x180015882
mov eax, dword [0x180052680]
and eax, 0x3e79144f
mov dword [0x180052594], eax
mov eax, dword [rbp - 0x65]
add eax, 0xac7
cmp dword [0x1800525c4], ebx
mov dword [rbp - 0x5d], eax
je 0x1800158a3
mov eax, 0x3a17
mov word [0x180052658], ax
jmp 0x1800158d6
cmp word [0x180052658], bx
je 0x1800158d6
movzx eax, byte [0x18005252e]
mov edx, dword [0x1800525fc]
add edx, eax
mov eax, dword [0x1800525fc]
add eax, edx
mov dword [0x1800525fc], eax
mov eax, dword [rbp - 0x41]
sub eax, 0x13
mov qword [0x1800526b8], rax
movsx ecx, word [0x180052678]
neg r9d
mov eax, dword [rbp - 0x41]
not ecx
movsx eax, word [0x18005269c]
sbb edx, edx
not edx
mov r13d, ebx
and edx, edi
cmp ecx, edx
mov edx, ebx
sete r13b
sub edx, eax
lea ecx, [rdx + r13]
mov rdx, qword [rbp - 0x39]
movsx eax, word [0x180052678]
xor rdx, 0x1d
not eax
add rdx, rcx
cdqe
inc rax
add rax, rdx
mov qword [rbp - 0x19], rax
mov eax, dword [rbp - 0x5d]
mov ecx, dword [rbp - 0x3d]
add eax, 0xca4b
xor ecx, 0x8527
or ecx, eax
movzx eax, byte [rbp - 0x29]
xor ecx, 0xd4ae
mov dword [rbp - 0x3d], ecx
movzx ecx, word [0x18005265c]
movzx edx, byte [0x180052650]
test cx, cx
cmovne edx, eax
mov eax, dword [0x1805c83a0]
mov byte [str.___wsdl:definitions_], dl
mov dword [rbp - 0x65], eax
movsx edx, r8b
lea eax, [rdx - 0xc0d7]
movsxd rcx, eax
lea eax, [rdx + 0x2f]
sub qword [0x1800526a0], rcx
mov ecx, dword [rbp - 0x65]
mov dword [0x1800526c8], eax
mov eax, dword [rbp - 0x3d]
add ecx, eax
mov dword [rbp - 0x59], ecx
mov eax, dword [rbp - 0x45]
sub eax, dword [0x1805c8540]
sub qword [0x180052660], 0xd62e4d0
mov dword [rbp - 0x45], eax
mov eax, dword [rbp - 0x65]
add eax, 0x3d6
mov dword [rbp - 0x4d], eax
mov eax, dword [rbp - 0x49]
cmp qword [0x180052650], rax
jg 0x1800159de
movzx eax, word [0x180052668]
mov ecx, ebx
test ax, ax
mov byte [str.___wsdl:definitions_], 0x60
mov eax, dword [0x180052614]
sete cl
imul eax, ecx
mov dword [rbp - 0x49], eax
mov eax, dword [rbp - 0x65]
add eax, 0x22d
mov dword [rbp - 0x5d], eax
mov eax, dword [rbp - 0x41]
cmp qword [0x180052660], rbx
je 0x180015a27
movzx ecx, byte [rbp - 0x61]
movzx eax, byte [rbp - 0x61]
sub ecx, eax
mov al, byte [rbp - 0x60]
add al, cl
mov byte [rbp - 0x61], al
mov eax, 1
sub al, byte [0x1800526c8]
movzx ecx, al
movzx eax, byte [str.___wsdl:definitions_]
imul eax, ecx
mov byte [str.___wsdl:definitions_], al
jmp 0x180015a47
mov rax, qword [rbp - 9]
mov al, byte [rbp - 0x69]
movzx eax, word [0x18005265c]
movsxd rcx, dword [rbp - 0x45]
mov rax, qword [rbp - 0x29]
cmp rcx, rax
mov eax, dword [rbp - 0x55]
sete r13b
test r12, r12
je 0x180015a55
test r14, r14
jne 0x180015bc0
xor ecx, ecx
call fcn.1800161e4
mov byte [str.___wsdl:definitions_], al
mov al, byte [rbp - 0x69]
mov eax, dword [rbp - 0x41]
cmp qword [0x180052680], rax
je 0x180015a8a
movzx eax, byte [0x180052593]
shl eax, 3
mov qword [rbp - 0x29], rax
mov eax, 0xb9
mov word [rbp - 0x31], ax
jmp 0x180015aa8
movsx edx, byte [0x18005257f]
movsx eax, byte [0x18005257f]
sub edx, eax
mov eax, dword [0x1800525fc]
add al, dl
mov byte [0x18005257f], al
mov eax, dword [0x1805c83a0]
mov dword [rbp - 0x55], eax
mov eax, dword [rbp - 0x55]
add eax, 0xdc
mov dword [rbp - 0x4d], eax
movsxd rcx, dword [0x180052614]
mov rax, qword [rbp - 0x29]
sub ecx, eax
mov dword [0x180052614], ecx
mov eax, dword [rbp - 0x55]
add eax, 0x44
mov dword [rbp - 0x65], eax
movzx eax, word [0x18062f4f8]
add word [0x180052698], ax
mov eax, dword [rbp - 0x55]
add eax, 0xdab2
mov dword [rbp - 0x3d], eax
mov rax, qword [rbp - 0x39]
mov edx, dword [rbp - 0x65]
inc al
movzx ecx, al
movzx eax, byte [rbp - 0x2d]
imul eax, ecx
mov byte [rbp - 0x2d], al
mov eax, dword [rbp - 0x65]
xor edx, eax
mov eax, dword [rbp - 0x3d]
imul ecx, eax, 0x4e7b
lea eax, [rdx - 0x430b4f86]
add eax, ecx
mov dword [rbp - 0x4d], eax
mov rax, qword [rbp - 0x29]
mov eax, dword [0x1805c83a0]
mov dword [rbp - 0x65], eax
mov eax, dword [rbp - 0x65]
add eax, 0x2af
mov dword [rbp - 0x21], eax
movzx eax, word [0x18005266c]
shr eax, 1
mov dword [rbp - 0x55], eax
mov eax, dword [rbp - 0x65]
add eax, 0x73
mov dword [rbp - 0x3d], eax
mov rax, qword [rbp - 0x29]
add qword [0x180052648], rax
mov eax, dword [rbp - 0x65]
add eax, 0x333
mov dword [rbp - 0x65], eax
mov edx, dword [rbp - 0x65]
mov eax, dword [rbp - 0x3d]
mov ecx, dword [rbp - 0x65]
imul edx, eax
mov eax, dword [rbp - 0x21]
sub ecx, eax
cmp ecx, edx
je 0x180015bbc
movzx eax, word [0x18005265c]
test ax, ax
je 0x180015b8d
mov rax, qword [0x1800526a0]
jmp 0x180015b94
mov rax, qword [0x180052670]
mov rax, qword [rbp - 0x39]
sub al, 0x38
mov byte [rbp - 0x69], al
movsx eax, byte [0x18005252f]
imul eax, eax, 0xb3
movsxd rcx, eax
mov qword [0x180052688], rcx
mov eax, dword [rbp - 0x4d]
jmp 0x1800161bc
mov r8d, dword [rbp - 0x51]
mov rcx, qword [0x1800526d0]
mov rax, qword [0x1800526d0]
and rcx, rdi
add rax, rcx
mov byte [reloc.mozglue.dll_export_full.dll_Ordinal_115], 2
mov qword [0x1800526d0], rax
mov al, byte [0x180052556]
neg al
movsx eax, byte [rbp - 0x69]
sbb rdx, rdx
imul ecx, eax, 0x964debb7
mov rax, qword [0x1800526a0]
add rdx, 0xffffffffffffff40
not rax
add rcx, rdx
mov rdx, rbx
movsx ecx, byte [reloc.mozglue.dll_export_full.dll_Ordinal_115]
sete dl
add rax, rdx
sete byte [0x18005252f]
test ecx, ecx
je 0x180015c54
sub ecx, 1
je 0x180015c3f
cmp ecx, 1
jne 0x180015c8e
mov rax, qword [rbp - 0x29]
lea ecx, [rax + rax*2]
shl ecx, 2
mov dword [rbp - 0x55], ecx
jmp 0x180015c8e
mov al, byte [0x18005266c]
add byte [0x180052593], al
mov r13d, dword [0x180661bb8]
jmp 0x180015c8e
mov rcx, qword [rbp - 9]
xor cl, byte [0x18005252d]
mov al, byte [0x180052593]
sub al, byte [str.___wsdl:definitions_]
movzx edx, al
movzx ecx, cl
imul edx, ecx
mov rcx, qword [rbp - 0x11]
mov rax, qword [rbp - 0x11]
or cl, al
mov eax, dword [0x1805c83a0]
mov dword [0x1800526b0], eax
sub dl, cl
mov byte [rbp - 0x2d], dl
or rsi, 0xffffffffffffffff
mov r15, rsi
inc r15
cmp byte [r12 + r15], bl
jne 0x180015c95
mov al, byte [0x18005252e]
add r8b, r8b
add r8b, al
mov dword [rbp - 0x51], r8d
inc rsi
cmp byte [r14 + rsi], bl
jne 0x180015cae
mov ecx, dword [rbp - 0x5d]
mov r14d, 0xf9
mov eax, dword [rbp - 0x5d]
mov edx, dword [rbp - 0x59]
imul ecx, eax
mov eax, dword [rbp - 0x5d]
add edx, ecx
cmp eax, edx
je 0x180016171
movsx eax, word [0x180052658]
sub eax, 0x5b51
cdqe
mov qword [0x1800526a8], rax
mov rax, qword [rbp - 0x29]
mov rcx, qword [rbp - 9]
test rax, rax
mov r8b, byte [0x18005252f]
movsx rdx, byte [0x18005252d]
sete al
sub cl, al
inc r8b
add r8b, r13b
and r8b, cl
lea rcx, [rdx + rdx*2]
not r8b
shl rcx, 6
test rcx, rcx
mov cl, 0xad
sete al
and al, dl
mov dl, 0xcc
add al, r8b
mov r8b, 0x41
mov byte [0x18005252d], al
mov eax, dword [rbp - 0x55]
add al, 0x37
mov byte [0x18005257f], al
mov eax, dword [0x1805c83a0]
mov dword [rbp - 0x5d], eax
mov r9, qword [rbp - 0x29]
call fcn.1800163d0
movsx ecx, al
mov word [0x180052678], cx
movzx eax, word [0x180052678]
test ax, ax
je 0x180015dba
mov r9d, 0x76
movsx edx, byte [0x18005257f]
mov rax, qword [rbp - 0x39]
movsx ecx, word [0x1800526c0]
mov r8, qword [0x180052648]
lea eax, [rcx + 1]
movsx ecx, r8b
add eax, edx
not eax
movsx edx, al
imul edx, ecx
mov byte [rbp - 0x60], dl
movzx eax, byte [rbp - 0x61]
xor rax, 0xed
mov qword [rbp - 0x11], rax
mov eax, dword [rbp - 0x45]
inc eax
mov dword [rbp - 0x45], eax
sub r9, 1
jne 0x180015d6f
jmp 0x180015dd2
cmp qword [0x1800526a8], rbx
mov rax, rbx
sete al
cmp qword [rbp - 0x19], rax
jg 0x180015dd2
mov eax, dword [rbp - 0x41]
sub edi, eax
mov eax, dword [rbp - 0x5d]
xor r9d, r9d
add eax, 0x1e76
mov r8b, 0xd1
mov dword [rbp - 0x59], eax
xor edx, edx
mov eax, dword [rbp - 0x5d]
xor ecx, ecx
add eax, 0x54
mov dword [rbp - 0x4d], eax
call fcn.1800163d0
mov byte [0x180052557], al
mov edx, ebx
mov al, byte [0x180052557]
mov ecx, ebx
cmp al, 0x61
mov al, byte [0x180052557]
setle dl
test al, al
setle cl
cmp ecx, edx
jne 0x180015e28
mov eax, dword [rbp - 0x45]
movsx edi, word [0x180052678]
neg edi
mov byte [rbp - 0x2d], al
mov eax, dword [rbp - 0x5d]
add eax, 0x66
cmp qword [rbp - 0x19], 0xffffffffe75817e9
mov dword [rbp - 0x59], eax
jle 0x180015e4f
mov al, byte [0x180052557]
sub al, byte [0x1806dd4e0]
mov byte [0x180052557], al
jmp 0x180015e64
mov al, byte [rbp - 0x60]
test al, al
jne 0x180015e64
mov rax, qword [0x180052670]
add eax, 0x2f994b7b
add edi, eax
mov rax, qword [rbp - 0x29]
imul ecx, eax, 0x6177
mov al, byte [0x1800526a8]
sub al, 0x22
mov dword [0x1800526b0], ecx
mov byte [rbp - 0x65], al
mov ecx, dword [rbp - 0x59]
mov eax, dword [rbp - 0x4d]
xor ecx, eax
add ecx, 0x4d
mov dword [rbp - 0x21], ecx
cmp rsi, r15
jbe 0x180016171
cmp word [0x1800526b4], bx
je 0x180015eb6
movsx rcx, byte [rbp - 0x69]
mov rax, qword [rbp - 0x11]
sub rcx, rax
mov rax, qword [rbp - 0x11]
add rax, rcx
mov qword [rbp - 0x11], rax
movsd xmm0, qword [str.FileName]
lea rcx, [rbp + 7]
mov al, byte [0x180039830]
movsd qword [rbp + 7], xmm0
mov byte [rbp + 0xf], al
call qword [sym.imp.KERNEL32.dll_lstrlenA]
movsxd rcx, eax
mov edx, 0xb6
mov eax, dword [0x1805c83a0]
mov qword [0x1800526d0], rcx
mov dword [rbp - 0x5d], eax
mov eax, 0x6959
movsx ecx, byte [rbp - 0x65]
add cx, ax
mov eax, 0x13e0
add ax, word [0x1800526c0]
mov word [0x180052658], ax
mov word [0x180052698], cx
mov qword [rbp - 0x39], 1
mov r13d, 0x1fe0
mov eax, dword [rbp - 0x49]
mov rax, qword [rbp - 0x39]
mov rcx, qword [rbp - 0x39]
xor rcx, qword [0x1800526a8]
mov rax, qword [rbp - 0x39]
add rax, rcx
mov qword [rbp - 0x39], rax
sub rdx, 1
jne 0x180015f14
mov eax, dword [rbp - 0x5d]
add eax, 0x34b9
mov dword [rbp - 0x59], eax
movsx ecx, byte [0x180052556]
mov eax, dword [0x18005267c]
sub eax, ecx
mov dword [rbp - 0x55], eax
mov eax, dword [rbp - 0x49]
mov word [0x180621940], ax
mov eax, dword [rbp - 0x5d]
add eax, 0x81d1
mov dword [rbp - 0x4d], eax
mov eax, dword [rbp - 0x5d]
add eax, 0x7def
mov dword [rbp - 0x59], eax
mov qword [rbp - 0x39], 4
mov rax, qword [0x180052690]
sar rax, 6
mov qword [rbp - 0x39], rax
mov rax, qword [rbp - 0x39]
test rax, rax
je 0x180015ff8
sub rax, 1
je 0x180015fec
sub rax, 1
je 0x180015fb9
cmp rax, 2
jne 0x180016010
mov eax, dword [rbp - 0x49]
jmp 0x180016010
mov ecx, dword [rbp - 0x45]
movsx eax, byte [rbp - 0x51]
add eax, ecx
mov rcx, qword [0x180052650]
cdqe
not rcx
sub rcx, rax
lea rax, [rcx + 0x6bbefa7a]
mov qword [0x180052660], rax
add eax, 0x393e0de3
mov dword [0x1800525c4], eax
jmp 0x180016010
mov eax, dword [rbp - 0x41]
mov qword [0x180052680], rax
jmp 0x180016010
cmp word [0x18005266c], bx
mov edx, ebx
movsx ecx, word [0x180052678]
sete dl
and ecx, edx
mov dword [rbp - 0x49], ecx
mov eax, dword [0x1800525fc]
test eax, eax
movsx ecx, byte [0x18005252e]
sete al
movsx edx, al
mov eax, ecx
movsx ecx, byte [0x180052648]
imul eax, edx
movsx eax, al
imul ecx, eax
movsx eax, byte [rbp - 0x2d]
movsx edx, cl
imul edx, eax
mov rax, qword [0x1800526d0]
movzx ecx, word [0x180052668]
not al
sub cl, 0x56
add al, dl
add cl, al
mov rax, qword [rbp - 0x39]
add cl, al
mov byte [0x18005252d], cl
mov ecx, dword [rbp - 0x59]
mov eax, dword [rbp - 0x4d]
or ecx, eax
mov eax, dword [0x1805c83a0]
xor ecx, 0xfdff
mov dword [rbp - 0x4d], ecx
mov dword [rbp - 0x51], eax
movsx r8d, word [0x180052678]
mov dword [0x180052614], 8
add r8d, 0xffffff87
mov ecx, dword [rbp - 0x51]
movzx r14d, r8w
mov eax, dword [rbp - 0x21]
add ecx, eax
movsx eax, word [0x1800526c0]
add eax, 0x13a5711c
mov dword [rbp - 0x59], ecx
mov dword [0x1800526c8], eax
mov eax, dword [rbp - 0x51]
add eax, 0x10d
mov dword [rbp - 0x21], eax
mov eax, dword [0x1805c83a0]
mov qword [0x1800526d0], rax
mov eax, dword [rbp - 0x51]
add eax, 0x277
mov dword [rbp - 0x51], eax
mov edx, dword [rbp - 0x51]
mov eax, dword [rbp - 0x59]
add edx, eax
mov eax, dword [rbp - 0x51]
imul ecx, eax, 0x24d
cmp ecx, edx
je 0x180016171
movsx eax, word [0x180052678]
cmp edi, eax
je 0x18001610b
cmp qword [0x1800526a0], rbx
jne 0x180016129
movzx eax, word [rbp - 0x31]
jmp 0x180016129
mov al, byte [0x18005252f]
lea eax, [r8 + 0x357fc3d4]
mov dword [0x180052594], eax
mov al, byte [rbp - 0x60]
sub al, 0x43
mov byte [0x180052557], al
movsx eax, byte [0x18005257f]
cmp ax, word [0x180052698]
jg 0x180015bb4
mov al, byte [rbp - 0x69]
movabs rcx, 0xda2d0e25a5a46
movzx eax, byte [rbp - 0x61]
imul rax, rcx
mov ecx, r13d
sub rcx, rax
mov eax, dword [rbp - 0x49]
test eax, eax
mov rax, qword [rbp - 0x39]
sete bl
sub rcx, rbx
add al, cl
mov byte [rbp - 0x60], al
jmp 0x180015bb4
mov r8, qword [rbp - 1]
lea rcx, [0x1800306e4]
mov qword [rsp + 0x40], rbx
sub r12, rsi
mov qword [rsp + 0x38], rbx
mov r9, rsi
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x28], rbx
lea rdx, [r15 + r12]
mov qword [rsp + 0x20], rbx
call fcn.18000c2e8
test eax, eax
mov eax, 0x5042
sete bl
sub r14w, ax
mov word [0x1800526c0], r14w
mov eax, ebx
mov rcx, qword [rbp + 0x17]
xor rcx, rsp
call fcn.18002ca80
mov rbx, qword [rsp + 0x130]
add rsp, 0xe0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret