Function at 0x4372d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
add ecx, esi
sub ecx, dword [esp + 0x48]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x1c], ecx
cmp ecx, esi
jbe 0x43762e
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0xc], 0
mov dword [esp], 0
mov dword [esp + 0x10], 0
jmp 0x437338
add esi, ecx
dec esi
mov eax, dword [esp + 0x38]
inc esi
cmp esi, dword [esp + 0x1c]
jae 0x43762e
test ebp, ebp
je 0x437392
movzx eax, byte [ebp]
mov byte [esp + 0x14], 0xe5
lea ecx, [esp + 0x15]
mov word [ecx + 4], 0
mov dword [ecx], 0
mov ecx, 0x6032777
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x6032763]
xor edx, ecx
mov ebx, edx
xor ebx, 0xa3
and edx, 0x5c
add edx, edx
sub edx, ebx
add dl, 0x50
mov byte [esp + ecx - 0x6032763], dl
inc ecx
cmp ecx, 0x603277e
jne 0x437360
cmp al, byte [esp + 0x14]
je 0x43739d
movzx eax, byte [esi]
mov ecx, dword [esp + 0x44]
cmp al, byte [ecx]
jne 0x437329
cmp dword [esp + 0x48], 2
jb 0x437470
mov ecx, 1
mov dword [esp + 0x20], esi
jmp 0x4373dc
movzx eax, byte [esi + ecx]
mov edx, dword [esp + 0x44]
cmp al, byte [edx + ecx]
jne 0x437326
inc ecx
cmp ecx, dword [esp + 0x48]
je 0x437470
test ebp, ebp
je 0x4373c0
mov esi, ebp
movzx eax, byte [ebp + ecx]
mov byte [esp + 4], al
mov byte [esp + 0x14], 0x7b
lea eax, [esp + 0x15]
mov word [eax + 4], 0
mov dword [eax], 0
mov ebp, 0x488000a
mov edi, 0x6b77fff5
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ebp - 0x487fff6]
mov eax, edi
and eax, 0x6920e945
mov ebx, ebp
and ebx, 0x408001a
or ebx, eax
xor edx, 0x79a0e945
mov eax, edx
and eax, ebx
add edx, ebx
add eax, eax
sub edx, eax
add dl, 0xce
mov byte [esp + ebp - 0x487fff6], dl
inc ebp
dec edi
cmp ebp, 0x4880011
jne 0x437410
movzx eax, byte [esp + 4]
cmp al, byte [esp + 0x14]
mov ebp, esi
mov esi, dword [esp + 0x20]
jne 0x4373c0
jmp 0x4373d1
mov ecx, dword [esp + 0xc]
mov edi, ecx
mov eax, dword [esp]
sub edi, eax
cmp ecx, dword [esp + 0x10]
je 0x43748c
mov edx, eax
mov eax, dword [esp + 0x38]
jmp 0x437615
mov ecx, edi
sar ecx, 2
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0x4374a0
mov ebx, eax
lea eax, [ebx*4]
push eax
call fcn.00408350
add esp, 4
mov edx, eax
mov eax, dword [esp]
test eax, eax
mov dword [esp + 4], edx
je 0x4375f2
mov dword [esp + 0x10], ebx
cmp edx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 8], edi
jbe 0x43758f
cmp eax, edx
jbe 0x43758f
test edi, edi
je 0x4375db
mov eax, dword [esp]
mov edx, dword [esp + 8]
add eax, edx
dec eax
mov ecx, dword [esp + 4]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x437524
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x437510
add eax, edx
add ecx, edx
add edx, dword [esp + 8]
mov edi, dword [esp]
sub edi, dword [esp + 0xc]
cmp edi, 0xfffffff8
ja 0x4375db
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x437540
jmp 0x4375db
mov ecx, edi
shr ecx, 2
mov ebx, dword [esp]
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
mov ecx, dword [esp + 8]
mov edx, ecx
and edx, 0xfffffffc
add eax, edx
add edx, ebx
shr ecx, 1
and ecx, 1
mov ebx, edx
mov dword [esp + 0xc], eax
mov edi, eax
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test byte [esp + 8], 1
je 0x4375db
mov ecx, dword [esp + 8]
and ecx, 2
movzx edx, byte [edx + ecx]
mov eax, dword [esp + 0xc]
mov byte [eax + ecx], dl
push dword [esp]
call fcn.00408360
add esp, 4
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x38]
mov dword [eax], edx
lea ecx, [edx + ebx*4]
mov edx, dword [esp + 4]
add edx, edi
mov dword [esp + 0x10], ecx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 4]
mov dword [esp], ecx
mov ecx, edx
mov edx, dword [esp + 4]
mov dword [edx + edi], esi
add ecx, 4
mov dword [esp + 0xc], ecx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x48]
add esi, ecx
dec esi
jmp 0x43732d
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret