Function at 0x7101d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x114
mov esi, dword [esp + 0x140]
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x24], 0
mov dword [esp + 0x40], 0xffffffff
xor ebp, ebp
cmp dword [esp + 0x130], 0
jne 0x710207
mov ebp, dword [edx + 0x28]
mov ecx, dword [esp + 0x13c]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x10], eax
mov edi, dword [edx + 0x14]
mov dword [esi], 0
mov eax, dword [edx + 0x2c]
test eax, eax
je 0x710269
mov ebx, ecx
mov esi, dword [esp + 0x128]
push dword [edx + 0x30]
push eax
push esi
call fcn.005bb2e0
add esp, 0xc
mov dword [esp], eax
test eax, eax
je 0x71033a
test ebx, ebx
je 0x7102b4
cmp dword [esp + 0x138], 0x1ff
ja 0x7102d1
mov eax, dword [esp + 0x140]
mov dword [eax], 0x20000
jmp 0x71043b
cmp dword [esp + 0x138], 0x800
mov eax, 0x100
mov ebx, 0xa0
cmovae ebx, eax
test ecx, ecx
cmovne ebx, ecx
cmp ebx, 0xa0
je 0x71032a
cmp ebx, 0x100
je 0x710320
cmp ebx, 0xe0
jne 0x710334
mov eax, str.SHA_224
jmp 0x710227
push dword [esp]
call fcn.005c4cc0
add esp, 4
mov ebx, eax
shl ebx, 3
cmp dword [esp + 0x138], 0x1ff
jbe 0x710257
mov edx, ebx
shr edx, 3
mov eax, ebx
and eax, 0xffffffb8
cmp eax, 0xa0
sete al
cmp edx, 0x20
sete cl
or cl, al
jne 0x7102ff
mov eax, dword [esp + 0x140]
mov dword [eax], 0x20
jmp 0x71043b
cmp dword [esp + 0x10], 0
mov dword [esp + 8], edx
je 0x71035c
cmp edi, edx
jae 0x710347
mov eax, dword [esp + 0x140]
mov dword [eax], 0x40000
jmp 0x71043b
mov eax, str.SHA_256
jmp 0x710227
mov eax, 0xa6551b
jmp 0x710227
mov dword [esi], 0x20
xor ebp, ebp
xor ebx, ebx
xor esi, esi
xor edi, edi
jmp 0x710444
lea eax, [esp + 0x94]
push edx
push dword [esp + 0x14]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
push esi
call fcn.00585f70
add esp, 4
test eax, eax
je 0x71043b
mov dword [esp + 0x18], ebx
push eax
mov esi, eax
call fcn.00586200
add esp, 4
push esi
call fcn.005863b0
add esp, 4
mov ebx, eax
push esi
call fcn.005863b0
add esp, 4
mov edi, eax
push esi
call fcn.005863b0
add esp, 4
mov dword [esp + 0x14], eax
push esi
call fcn.005863b0
add esp, 4
mov dword [esp + 0xc], eax
push esi
call fcn.005863b0
add esp, 4
mov dword [esp + 0x38], eax
mov dword [esp + 4], esi
push esi
call fcn.005863b0
add esp, 4
test eax, eax
je 0x710a6d
mov dword [esp + 0x30], ebx
mov dword [esp + 0x1c], edi
mov esi, dword [esp + 0x138]
mov dword [esp + 0x3c], eax
add esi, 0x3f
and esi, 0xffffffc0
call fcn.00589710
mov dword [esp + 0x34], esi
lea edi, [esi - 1]
push edi
push eax
push dword [esp + 0x44]
call fcn.0058e720
add esp, 0xc
test eax, eax
je 0x710a6d
cmp dword [esp + 0x130], 0
je 0x71046c
mov edx, dword [esp + 0x12c]
cmp dword [edx], 0
setne al
cmp dword [edx + 4], 0
sete cl
cmp al, cl
mov esi, dword [esp]
je 0x710650
mov ecx, ebp
mov eax, ebp
and eax, 1
jmp 0x7104a3
xor ebp, ebp
xor ebx, ebx
xor edi, edi
mov esi, dword [esp]
push ebx
call fcn.00586030
add esp, 4
push edi
call fcn.0058bf20
add esp, 4
push esi
call fcn.005b9d90
add esp, 4
mov eax, ebp
add esp, 0x114
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, ebp
mov eax, ebp
and eax, 1
mov esi, dword [esp]
mov edx, dword [esp + 0x12c]
je 0x710494
cmp dword [esp + 0x10], 0
je 0x71095b
cmp dword [edx + 0x18], 0
js 0x71095b
test cl, 2
je 0x7104a3
cmp dword [edx + 8], 0
je 0x71096a
mov dword [esp + 0x20], ecx
mov ecx, dword [edx]
test ecx, ecx
je 0x710662
test eax, eax
jne 0x710662
mov eax, dword [edx + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ecx
call fcn.0058be70
test eax, eax
je 0x710977
mov edi, eax
push dword [esp + 4]
push dword [esp + 0x10]
push eax
call fcn.0058bf70
add esp, 0xc
xor ebp, ebp
test eax, eax
je 0x710a74
cmp dword [esp + 0x130], 0
je 0x710980
call fcn.00589710
push eax
push dword [esp + 0x10]
mov ebx, dword [esp + 0x44]
push ebx
call fcn.00585cb0
add esp, 0xc
test eax, eax
je 0x710a74
push dword [esp + 4]
push dword [esp + 0x18]
push ebx
push 0
push dword [esp + 0x40]
call fcn.00586730
add esp, 0x14
test eax, eax
je 0x710a74
lea eax, [esp + 0x40]
mov ecx, dword [esp + 4]
mov edx, edi
push eax
push ebx
push dword [esp + 0x38]
mov ebx, dword [esp + 0x18]
push ebx
push dword [esp + 0x48]
push dword [esp + 0x30]
call fcn.00710110
add esp, 0x18
test eax, eax
je 0x710a74
push 1
push 3
push dword [esp + 0x14c]
call fcn.006af260
add esp, 0xc
test eax, eax
je 0x710a74
mov edx, dword [esp + 0x12c]
mov eax, dword [edx]
cmp ebx, eax
je 0x7105aa
push eax
call fcn.005899b0
add esp, 4
push ebx
call fcn.00589ba0
mov edx, dword [esp + 0x130]
add esp, 4
mov dword [edx], eax
mov eax, dword [edx + 4]
mov ebx, dword [esp + 0x14]
cmp ebx, eax
je 0x7105d1
push eax
call fcn.005899b0
add esp, 4
push ebx
call fcn.00589ba0
mov edx, dword [esp + 0x130]
add esp, 4
mov dword [edx + 4], eax
mov eax, dword [edx + 8]
mov ebx, dword [esp + 0x1c]
cmp ebx, eax
je 0x7105fc
push eax
call fcn.005899b0
add esp, 4
push ebx
call fcn.00589ba0
mov edx, dword [esp + 0x130]
add esp, 4
mov dword [esp + 0x1c], eax
mov dword [edx + 8], eax
cmp dword [edx], 0
je 0x710a74
cmp dword [edx + 4], 0
sete al
cmp dword [esp + 0x1c], 0
sete cl
or cl, al
jne 0x710a74
lea eax, [esp + 0x94]
push dword [esp + 0x24]
push dword [esp + 0xc]
push eax
push edx
call fcn.005d6050
add esp, 0x10
test eax, eax
je 0x710a74
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x12c]
mov dword [ecx + 0x24], eax
jmp 0x7109d4
mov eax, dword [esp + 0x140]
mov dword [eax], 0x800
jmp 0x710977
xor ebx, ebx
cmp dword [esp + 0x10], 0
sete bl
mov ebp, dword [esp + 8]
lea eax, [ebp - 1]
mov dword [esp + 0x4c], eax
mov ecx, 0xcccccccd
mov eax, edi
mul ecx
shr edx, 7
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x34]
lea eax, [eax*4 - 1]
mov dword [esp + 0x28], eax
mov eax, ebp
and eax, 0x20
mov dword [esp + 0x2c], eax
and ebp, 0x38
mov dword [esp + 0x48], ebp
mov dword [esp + 0x10], 0
push dword [esp + 4]
call fcn.00586720
add esp, 4
mov dword [esp + 0x50], eax
test ebx, ebx
sete bl
push dword [esp + 0x10]
push 0
push dword [esp + 0x14c]
call fcn.006af260
add esp, 0xc
test eax, eax
je 0x710977
test bl, 1
jne 0x710707
push 0
push dword [esp + 0xc]
lea eax, [esp + 0x9c]
push eax
push dword [esp + 0x5c]
call fcn.00605750
add esp, 0x10
test eax, eax
jle 0x710977
mov ebp, dword [esp + 8]
push ebp
lea edi, [esp + 0x98]
push edi
lea eax, [esp + 0xbc]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
push ebp
push edi
lea eax, [esp + 0xdc]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
cmp dword [esp + 0x18], 8
jb 0x710763
mov eax, dword [esp + 0x4c]
nop word cs:[eax + eax]
inc byte [esp + eax + 0xb4]
sete cl
add eax, 0xffffffff
jae 0x710763
test cl, cl
jne 0x710750
push 0
push esi
push 0
lea eax, [esp + 0x60]
push eax
push dword [esp + 0x18]
lea eax, [esp + 0xa8]
push eax
call fcn.005bb180
add esp, 0x18
test eax, eax
mov ebp, dword [esp + 0x14]
je 0x710977
push 0
push esi
push 0
lea eax, [esp + 0xe0]
push eax
push dword [esp + 0x18]
lea eax, [esp + 0xc8]
push eax
call fcn.005bb180
add esp, 0x18
test eax, eax
je 0x710977
cmp dword [esp + 0x18], 8
mov edx, dword [esp + 8]
jb 0x710861
xor ecx, ecx
cmp dword [esp + 0x18], 0x40
jb 0x710850
xor eax, eax
cmp dword [esp + 0x18], 0x100
jb 0x710826
xor eax, eax
mov ecx, dword [esp + 0x2c]
movups xmm0, xmmword [esp + eax + 0xd4]
movups xmm1, xmmword [esp + eax + 0xe4]
movups xmm2, xmmword [esp + eax + 0x54]
xorps xmm2, xmm0
movups xmm0, xmmword [esp + eax + 0x64]
xorps xmm0, xmm1
movups xmmword [esp + eax + 0x54], xmm2
movups xmmword [esp + eax + 0x64], xmm0
add eax, 0x20
cmp ecx, eax
jne 0x7107e4
cmp edx, ecx
je 0x710861
mov ecx, dword [esp + 0x2c]
mov eax, ecx
test byte [esp + 0x18], 0xc0
je 0x710850
mov ecx, dword [esp + 0x48]
movsd xmm0, qword [esp + eax + 0xd4]
movsd xmm1, qword [esp + eax + 0x54]
xorps xmm1, xmm0
movlps qword [esp + eax + 0x54], xmm1
add eax, 8
cmp ecx, eax
jne 0x71082a
jmp 0x71085d
movzx eax, byte [esp + ecx + 0xd4]
xor byte [esp + ecx + 0x54], al
inc ecx
cmp edx, ecx
jne 0x710850
or byte [esp + 0x54], 0x80
or byte [esp + edx + 0x53], 1
push ebp
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00589e00
add esp, 0xc
test eax, eax
je 0x710977
inc dword [esp + 0x10]
push dword [esp + 0x144]
push dword [esp + 8]
push ebp
call fcn.006afed0
add esp, 0xc
test eax, eax
jg 0x7108ad
xor ebx, ebx
test eax, eax
je 0x7106c3
jmp 0x710977
push 0
push 2
mov edi, dword [esp + 0x14c]
push edi
call fcn.006af260
add esp, 0xc
test eax, eax
je 0x710977
push 0
push 3
push edi
call fcn.006af260
add esp, 0xc
test eax, eax
je 0x710a6d
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x130], 0
jne 0x710900
mov eax, dword [esp + 0x12c]
mov esi, dword [eax + 0x18]
cmp esi, dword [esp + 0x28]
jg 0x710a23
mov ecx, dword [esp + 4]
mov edx, dword [esp]
push dword [esp + 0x140]
lea eax, [esp + 0x28]
push eax
push edi
push dword [esp + 0x40]
push dword [esp + 0x1c]
push ebp
push dword [esp + 0x20]
lea eax, [esp + 0xd0]
push eax
push dword [esp + 0x64]
push esi
call fcn.0070fcd0
add esp, 0x28
test eax, eax
jg 0x7109eb
mov ebx, 1
xor ebp, ebp
mov edi, 0
cmp eax, 0xffffffff
mov esi, dword [esp]
jne 0x7106ae
jmp 0x710a74
mov eax, dword [esp + 0x140]
mov dword [eax], 0x200
jmp 0x710977
mov eax, dword [esp + 0x140]
mov dword [eax], 0x400
xor ebp, ebp
xor edi, edi
jmp 0x710a74
test byte [esp + 0x20], 2
je 0x7109b9
push dword [esp + 0x140]
push dword [esp + 0x3c]
mov eax, dword [esp + 0x134]
push dword [eax + 8]
push dword [esp + 0x20]
push dword [esp + 0x1c]
push edi
push dword [esp + 0x1c]
call fcn.005d66b0
add esp, 0x1c
test eax, eax
je 0x710a74
push 1
push 3
push dword [esp + 0x14c]
call fcn.006af260
add esp, 0xc
test eax, eax
je 0x710a74
mov eax, dword [esp + 0x20]
and eax, 2
cmp eax, 1
mov ebp, 2
sbb ebp, 0
jmp 0x710a74
push 1
push 2
push dword [esp + 0x14c]
call fcn.006af260
add esp, 0xc
test eax, eax
je 0x710a6d
cmp dword [esp + 0x130], 0
je 0x710a32
mov eax, dword [esp + 0x20]
and eax, 3
xor edi, edi
cmp eax, 1
mov esi, dword [esp]
jne 0x7104c4
jmp 0x7109d4
mov eax, dword [esp + 0x140]
mov dword [eax], 0x1000
jmp 0x710a6d
cmp dword [esp + 0x24], esi
jne 0x710a60
mov eax, dword [esp + 0x12c]
push dword [eax]
push dword [esp + 0x10]
call fcn.0058a670
add esp, 8
test eax, eax
je 0x710a0c
mov eax, dword [esp + 0x140]
mov dword [eax], 0x2000
jmp 0x710a6d
mov eax, dword [esp + 0x140]
mov dword [eax], 0x10000
xor ebp, ebp
xor edi, edi
mov esi, dword [esp]
mov ebx, dword [esp + 4]
push ebx
call fcn.005862e0
add esp, 4
jmp 0x710444