Function at 0x70e1d0
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 0x70e207
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 0x70e269
mov ebx, ecx
mov esi, dword [esp + 0x128]
push dword [edx + 0x30]
push eax
push esi
call fcn.005b9720
add esp, 0xc
mov dword [esp], eax
test eax, eax
je 0x70e33a
test ebx, ebx
je 0x70e2b4
cmp dword [esp + 0x138], 0x1ff
ja 0x70e2d1
mov eax, dword [esp + 0x140]
mov dword [eax], 0x20000
jmp 0x70e43b
cmp dword [esp + 0x138], 0x800
mov eax, 0x100
mov ebx, 0xa0
cmovae ebx, eax
test ecx, ecx
cmovne ebx, ecx
cmp ebx, 0xa0
je 0x70e32a
cmp ebx, 0x100
je 0x70e320
cmp ebx, 0xe0
jne 0x70e334
mov eax, str.SHA_224
jmp 0x70e227
push dword [esp]
call fcn.005c3100
add esp, 4
mov ebx, eax
shl ebx, 3
cmp dword [esp + 0x138], 0x1ff
jbe 0x70e257
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 0x70e2ff
mov eax, dword [esp + 0x140]
mov dword [eax], 0x20
jmp 0x70e43b
cmp dword [esp + 0x10], 0
mov dword [esp + 8], edx
je 0x70e35c
cmp edi, edx
jae 0x70e347
mov eax, dword [esp + 0x140]
mov dword [eax], 0x40000
jmp 0x70e43b
mov eax, str.SHA_256
jmp 0x70e227
mov eax, 0xaeb8bb
jmp 0x70e227
mov dword [esi], 0x20
xor ebp, ebp
xor ebx, ebx
xor esi, esi
xor edi, edi
jmp 0x70e444
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.005843b0
add esp, 4
test eax, eax
je 0x70e43b
mov dword [esp + 0x18], ebx
push eax
mov esi, eax
call fcn.00584640
add esp, 4
push esi
call fcn.005847f0
add esp, 4
mov ebx, eax
push esi
call fcn.005847f0
add esp, 4
mov edi, eax
push esi
call fcn.005847f0
add esp, 4
mov dword [esp + 0x14], eax
push esi
call fcn.005847f0
add esp, 4
mov dword [esp + 0xc], eax
push esi
call fcn.005847f0
add esp, 4
mov dword [esp + 0x38], eax
mov dword [esp + 4], esi
push esi
call fcn.005847f0
add esp, 4
test eax, eax
je 0x70ea6d
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.00587b50
mov dword [esp + 0x34], esi
lea edi, [esi - 1]
push edi
push eax
push dword [esp + 0x44]
call fcn.0058cb60
add esp, 0xc
test eax, eax
je 0x70ea6d
cmp dword [esp + 0x130], 0
je 0x70e46c
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 0x70e650
mov ecx, ebp
mov eax, ebp
and eax, 1
jmp 0x70e4a3
xor ebp, ebp
xor ebx, ebx
xor edi, edi
mov esi, dword [esp]
push ebx
call fcn.00584470
add esp, 4
push edi
call fcn.0058a360
add esp, 4
push esi
call fcn.005b81d0
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 0x70e494
cmp dword [esp + 0x10], 0
je 0x70e95b
cmp dword [edx + 0x18], 0
js 0x70e95b
test cl, 2
je 0x70e4a3
cmp dword [edx + 8], 0
je 0x70e96a
mov dword [esp + 0x20], ecx
mov ecx, dword [edx]
test ecx, ecx
je 0x70e662
test eax, eax
jne 0x70e662
mov eax, dword [edx + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ecx
call fcn.0058a2b0
test eax, eax
je 0x70e977
mov edi, eax
push dword [esp + 4]
push dword [esp + 0x10]
push eax
call fcn.0058a3b0
add esp, 0xc
xor ebp, ebp
test eax, eax
je 0x70ea74
cmp dword [esp + 0x130], 0
je 0x70e980
call fcn.00587b50
push eax
push dword [esp + 0x10]
mov ebx, dword [esp + 0x44]
push ebx
call fcn.005840f0
add esp, 0xc
test eax, eax
je 0x70ea74
push dword [esp + 4]
push dword [esp + 0x18]
push ebx
push 0
push dword [esp + 0x40]
call fcn.00584b70
add esp, 0x14
test eax, eax
je 0x70ea74
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.0070e110
add esp, 0x18
test eax, eax
je 0x70ea74
push 1
push 3
push dword [esp + 0x14c]
call fcn.006ad6a0
add esp, 0xc
test eax, eax
je 0x70ea74
mov edx, dword [esp + 0x12c]
mov eax, dword [edx]
cmp ebx, eax
je 0x70e5aa
push eax
call fcn.00587df0
add esp, 4
push ebx
call fcn.00587fe0
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 0x70e5d1
push eax
call fcn.00587df0
add esp, 4
push ebx
call fcn.00587fe0
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 0x70e5fc
push eax
call fcn.00587df0
add esp, 4
push ebx
call fcn.00587fe0
mov edx, dword [esp + 0x130]
add esp, 4
mov dword [esp + 0x1c], eax
mov dword [edx + 8], eax
cmp dword [edx], 0
je 0x70ea74
cmp dword [edx + 4], 0
sete al
cmp dword [esp + 0x1c], 0
sete cl
or cl, al
jne 0x70ea74
lea eax, [esp + 0x94]
push dword [esp + 0x24]
push dword [esp + 0xc]
push eax
push edx
call fcn.005d4490
add esp, 0x10
test eax, eax
je 0x70ea74
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x12c]
mov dword [ecx + 0x24], eax
jmp 0x70e9d4
mov eax, dword [esp + 0x140]
mov dword [eax], 0x800
jmp 0x70e977
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.00584b60
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.006ad6a0
add esp, 0xc
test eax, eax
je 0x70e977
test bl, 1
jne 0x70e707
push 0
push dword [esp + 0xc]
lea eax, [esp + 0x9c]
push eax
push dword [esp + 0x5c]
call fcn.00603b90
add esp, 0x10
test eax, eax
jle 0x70e977
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 0x70e763
mov eax, dword [esp + 0x4c]
nop word cs:[eax + eax]
inc byte [esp + eax + 0xb4]
sete cl
add eax, 0xffffffff
jae 0x70e763
test cl, cl
jne 0x70e750
push 0
push esi
push 0
lea eax, [esp + 0x60]
push eax
push dword [esp + 0x18]
lea eax, [esp + 0xa8]
push eax
call fcn.005b95c0
add esp, 0x18
test eax, eax
mov ebp, dword [esp + 0x14]
je 0x70e977
push 0
push esi
push 0
lea eax, [esp + 0xe0]
push eax
push dword [esp + 0x18]
lea eax, [esp + 0xc8]
push eax
call fcn.005b95c0
add esp, 0x18
test eax, eax
je 0x70e977
cmp dword [esp + 0x18], 8
mov edx, dword [esp + 8]
jb 0x70e861
xor ecx, ecx
cmp dword [esp + 0x18], 0x40
jb 0x70e850
xor eax, eax
cmp dword [esp + 0x18], 0x100
jb 0x70e826
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 0x70e7e4
cmp edx, ecx
je 0x70e861
mov ecx, dword [esp + 0x2c]
mov eax, ecx
test byte [esp + 0x18], 0xc0
je 0x70e850
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 0x70e82a
jmp 0x70e85d
movzx eax, byte [esp + ecx + 0xd4]
xor byte [esp + ecx + 0x54], al
inc ecx
cmp edx, ecx
jne 0x70e850
or byte [esp + 0x54], 0x80
or byte [esp + edx + 0x53], 1
push ebp
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00588240
add esp, 0xc
test eax, eax
je 0x70e977
inc dword [esp + 0x10]
push dword [esp + 0x144]
push dword [esp + 8]
push ebp
call fcn.006ae310
add esp, 0xc
test eax, eax
jg 0x70e8ad
xor ebx, ebx
test eax, eax
je 0x70e6c3
jmp 0x70e977
push 0
push 2
mov edi, dword [esp + 0x14c]
push edi
call fcn.006ad6a0
add esp, 0xc
test eax, eax
je 0x70e977
push 0
push 3
push edi
call fcn.006ad6a0
add esp, 0xc
test eax, eax
je 0x70ea6d
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x130], 0
jne 0x70e900
mov eax, dword [esp + 0x12c]
mov esi, dword [eax + 0x18]
cmp esi, dword [esp + 0x28]
jg 0x70ea23
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.0070dcd0
add esp, 0x28
test eax, eax
jg 0x70e9eb
mov ebx, 1
xor ebp, ebp
mov edi, 0
cmp eax, 0xffffffff
mov esi, dword [esp]
jne 0x70e6ae
jmp 0x70ea74
mov eax, dword [esp + 0x140]
mov dword [eax], 0x200
jmp 0x70e977
mov eax, dword [esp + 0x140]
mov dword [eax], 0x400
xor ebp, ebp
xor edi, edi
jmp 0x70ea74
test byte [esp + 0x20], 2
je 0x70e9b9
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.005d4af0
add esp, 0x1c
test eax, eax
je 0x70ea74
push 1
push 3
push dword [esp + 0x14c]
call fcn.006ad6a0
add esp, 0xc
test eax, eax
je 0x70ea74
mov eax, dword [esp + 0x20]
and eax, 2
cmp eax, 1
mov ebp, 2
sbb ebp, 0
jmp 0x70ea74
push 1
push 2
push dword [esp + 0x14c]
call fcn.006ad6a0
add esp, 0xc
test eax, eax
je 0x70ea6d
cmp dword [esp + 0x130], 0
je 0x70ea32
mov eax, dword [esp + 0x20]
and eax, 3
xor edi, edi
cmp eax, 1
mov esi, dword [esp]
jne 0x70e4c4
jmp 0x70e9d4
mov eax, dword [esp + 0x140]
mov dword [eax], 0x1000
jmp 0x70ea6d
cmp dword [esp + 0x24], esi
jne 0x70ea60
mov eax, dword [esp + 0x12c]
push dword [eax]
push dword [esp + 0x10]
call fcn.00588ab0
add esp, 8
test eax, eax
je 0x70ea0c
mov eax, dword [esp + 0x140]
mov dword [eax], 0x2000
jmp 0x70ea6d
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.00584720
add esp, 4
jmp 0x70e444