Function at 0x437db0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x3c
mov eax, dword [esp + 0x40]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x4c]
test eax, eax
mov dword [esp + 0x38], ebp
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], edi
je 0x437fb2
mov edi, dword [esp + 0x48]
test edi, edi
je 0x437fd5
mov dword [esp], ebp
call fcn.00435ba0
test eax, eax
jne 0x437f60
mov eax, dword [esp + 0x40]
test esi, esi
mov dword [eax + 0xd0], ebp
lea eax, [ebp + ebp*2]
lea eax, [ebp + eax*4]
lea edi, [eax*8 + 0x750290]
mov edx, dword [edi + 8]
mov eax, 3
mov dword [esp + 0x20], edx
je 0x437f60
mov eax, dword [edi + 0xc]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x24]
mov eax, 0xd
test edx, edx
je 0x437f60
mov eax, dword [edi + 0xc]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov ecx, dword [esp + 0x40]
test eax, eax
mov ebx, eax
mov dword [ecx + 0x1a8], eax
je 0x438021
mov eax, dword [edi + 0xc]
cmp eax, esi
jae 0x437f74
mov dword [esp + 0x28], eax
lea eax, [esp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov dword [esp], ebp
call fcn.00435e50
test eax, eax
mov ebx, eax
jne 0x437f40
mov eax, dword [edi + 0xc]
cmp eax, dword [esp + 0x20]
ja 0x437ff8
lea esi, [esi]
lea edi, [edi]
lea eax, [ebp + ebp*2]
xor edx, edx
lea eax, [ebp + eax*4]
mov eax, dword [eax*8 + 0x75029c]
cmp eax, 0
jbe 0x437ef2
mov ecx, dword [esp + 0x40]
mov ebx, dword [ecx + 0x1a8]
mov ecx, eax
lea esi, [esi]
lea edi, [edi]
movzx eax, byte [edx + ebx]
mov esi, dword [esp + 0x24]
xor al, 0x36
mov byte [edx + esi], al
inc edx
cmp ecx, edx
ja 0x437ee0
lea eax, [ebp + ebp*2]
lea eax, [ebp + eax*4]
lea esi, [eax*8]
mov eax, dword [esp + 0x40]
lea edi, [esi + 0x7502e0]
mov dword [esp], eax
call dword [edi + 4]
test eax, eax
mov ebx, eax
jne 0x437f40
mov eax, dword [esi + 0x75029c]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call dword [edi + 8]
test eax, eax
mov ebx, eax
je 0x437f52
lea esi, [esi]
mov esi, dword [esp + 0x40]
mov eax, dword [esi + 0x1a8]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, ebx
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0x38]
add esp, 0x3c
ret
mov dword [esp + 8], esi
mov eax, dword [esp + 0x48]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [edi + 0xc]
cmp eax, esi
jbe 0x437eb0
mov edx, dword [esp + 0x40]
sub eax, esi
mov dword [esp + 4], eax
mov ebx, dword [edx + 0x1a8]
add esi, ebx
mov dword [esp], esi
call fcn.00437d60
jmp 0x437eb0
mov dword [esp], str.hmac___NULL
mov eax, 0x25
mov dword [esp + 8], eax
mov eax, str..._Compression__Encryption_mac_hmac_hmac_init.c
mov dword [esp + 4], eax
call fcn.00433ed0
jmp 0x437dd7
mov dword [esp], str.key___NULL
mov ebx, 0x26
mov ecx, str..._Compression__Encryption_mac_hmac_hmac_init.c
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
call fcn.00433ed0
jmp 0x437de3
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
sub eax, esi
mov dword [esp + 4], eax
mov edx, dword [edx + 0x1a8]
add dword [esp + 0x20], edx
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
call fcn.00437d60
jmp 0x437eb0
mov esi, dword [esp + 0x24]
mov dword [esp], esi
call sub.msvcrt.dll_free
mov eax, 0xd
jmp 0x437f60