Function at 0x5f4210
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x13c
xor ecx, ecx
mov edx, dword [esp + 0x140]
push ebx
push esi
add edx, 0xd
push edi
mov esi, edx
mov dword [esp + 0x2c], ecx
push ebp
mov dword [esp + 0x34], edx
movsx eax, cx
mov byte [esp + eax + 0x4c], cl
inc cx
cmp cx, 0x100
jl 0x5f4230
xor bp, bp
xor eax, eax
mov byte [esp + 0x18], al
xor ecx, ecx
mov edx, dword [esp + 0x150]
mov cl, al
movsx eax, bp
inc bp
lea edi, [esp + eax + 0x4c]
xor eax, eax
mov bl, byte [edi]
mov al, byte [edx + ecx]
xor edx, edx
mov dl, bl
sub eax, edx
xor edx, edx
mov dl, byte [esp + 0x18]
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x18], al
xor eax, eax
mov al, byte [esp + 0x18]
lea edx, [esp + eax + 0x4c]
mov al, byte [edx]
mov byte [edi], al
lea eax, [ecx + 1]
mov byte [edx], bl
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
cmp bp, 0x100
jl 0x5f4249
xor ebx, ebx
mov byte [esp + 0x18], bl
mov byte [esp + 0x14], bl
xor eax, eax
mov al, byte [esp + 0x18]
inc eax
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x18], al
xor eax, eax
mov al, byte [esp + 0x18]
lea edi, [esp + eax + 0x4c]
xor eax, eax
mov al, byte [esp + 0x14]
mov cl, byte [edi]
movzx bp, cl
movzx edx, bp
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x14], al
xor eax, eax
mov al, byte [esp + 0x14]
lea edx, [esp + eax + 0x4c]
mov al, byte [edx]
mov byte [edi], al
xor eax, eax
mov byte [edx], cl
movsx ecx, bx
movsx edx, bp
inc bx
mov al, byte [edi]
add eax, edx
mov ebp, dword [esp + 0x150]
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
xor edx, edx
mov dl, al
mov al, byte [esp + edx + 0x4c]
xor byte [ecx + ebp + 8], al
cmp bx, 4
jl 0x5f42b4
mov ax, word [ebp + 6]
mov edi, ebp
mov dword [esp + 0x18], 0xc
mov word [ebp + 6], 0
xor bx, bx
mov word [esp + 0x12], ax
mov al, byte [edi]
xor ebp, ebp
mov bp, bx
mov cl, al
shr bx, 4
and ebp, 0xf
and cl, 0xf
xor edx, edx
mov dl, cl
and al, 0xf3
shr al, 2
xor ecx, ecx
mov edx, dword [edx*4 + 0x77d5c8]
mov cl, al
xor dx, bx
inc edi
xor dx, word [ebp*4 + 0x77d5c8]
mov ebx, dword [ecx + 0x77d5c8]
xor ebp, ebp
mov bp, dx
shr dx, 4
and ebp, 0xf
xor bx, dx
xor bx, word [ebp*4 + 0x77d5c8]
dec dword [esp + 0x18]
jne 0x5f435f
cmp bx, word [esp + 0x12]
je 0x5f43c9
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x13c
ret
mov edx, dword [esp + 0x150]
xor ebx, ebx
add edx, 0xa
xor eax, eax
mov dword [esp + 0x18], edx
mov byte [esp + 0x28], bl
mov edx, dword [esp + 0x150]
mov byte [esp + 0x11], bl
mov ax, word [edx + 8]
mov dword [esp + 0x14], eax
lea ecx, [eax - 0xc]
mov dword [esp + 0x2c], ecx
cmp ecx, ebx
jle 0x5f4493
xor eax, eax
mov al, byte [esp + 0x28]
inc eax
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x28], al
xor eax, eax
mov al, byte [esp + 0x28]
lea edi, [esp + eax + 0x4c]
xor eax, eax
mov al, byte [esp + 0x11]
mov cl, byte [edi]
movzx bp, cl
movzx edx, bp
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x11], al
xor eax, eax
mov al, byte [esp + 0x11]
lea edx, [esp + eax + 0x4c]
mov al, byte [edx]
mov byte [edi], al
xor eax, eax
mov byte [edx], cl
movsx ecx, bx
movsx edx, bp
inc bx
mov al, byte [edi]
add eax, edx
mov ebp, dword [esp + 0x150]
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
xor edx, edx
mov dl, al
mov al, byte [esp + edx + 0x4c]
xor byte [ecx + ebp + 0xc], al
movsx eax, bx
cmp eax, dword [esp + 0x2c]
jl 0x5f4401
xor ax, ax
mov edx, dword [esp + 0x150]
add edx, 0xc
mov edi, dword [esp + 0x14]
mov ebx, edx
sub edi, 0xc
mov dword [esp + 0x28], edx
je 0x5f450f
mov cl, byte [ebx]
xor ebp, ebp
mov bp, ax
mov dl, cl
shr ax, 4
and ebp, 0xf
and dl, 0xf
and cl, 0xf3
mov dword [esp + 0x14], 0
mov byte [esp + 0x14], dl
mov edx, dword [esp + 0x14]
shr cl, 2
inc ebx
mov edx, dword [edx*4 + 0x77d5c8]
xor dx, ax
xor eax, eax
xor dx, word [ebp*4 + 0x77d5c8]
mov al, cl
xor ebp, ebp
mov eax, dword [eax + 0x77d5c8]
mov bp, dx
shr dx, 4
and ebp, 0xf
xor ax, dx
xor ax, word [ebp*4 + 0x77d5c8]
dec edi
jne 0x5f44af
mov ecx, dword [esp + 0x18]
cmp word [ecx], ax
je 0x5f4525
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x13c
ret
xor ebx, ebx
lea eax, [esp + 0x18]
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov ecx, dword [esp + 0x28]
mov dword [eax + 0xc], ebx
lea eax, [esp + 0x18]
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov al, byte [ecx]
test al, al
je 0x5f45cb
xor ecx, ecx
mov edi, 0x103
mov cl, al
mov ebp, 0x29
xor eax, eax
mov al, byte [esi]
test eax, eax
je 0x5f4571
cmp eax, 1
je 0x5f459d
cmp eax, 2
je 0x5f45bd
jmp 0x5f45c8
xor eax, eax
mov ax, word [esi + 1]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
add ax, 2
add bx, ax
mov word [esp + 0x18], ax
mov eax, dword [esp + 0x18]
and eax, 0xffff
inc eax
add esi, eax
jmp 0x5f45c8
add bx, di
xor eax, eax
mov ax, word [esi + 1]
mov word [esp + 0x1a], di
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
lea esi, [eax + esi + 2]
jmp 0x5f45c8
add bx, bp
add esi, 0x2a
mov word [esp + 0x1c], bp
dec ecx
jne 0x5f455d
add bx, 0x20
movzx edi, bx
push edi
call fcn.005d53e7
mov esi, dword [esp + 0x158]
add esp, 4
xor ecx, ecx
mov dword [esi], eax
test bx, bx
je 0x5f45f7
mov eax, dword [esi]
inc ecx
cmp ecx, edi
mov byte [eax + ecx - 1], 0
jb 0x5f45eb
xor edx, edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x14], edx
cmp word [ecx], 0
mov eax, dword [esi]
je 0x5f4630
lea edi, [eax + 0x20]
lea ebx, [esp + 0x18]
mov dword [eax + edx], edi
cmp ecx, ebx
jbe 0x5f4637
mov edi, ebx
mov eax, dword [esp + 0x14]
mov ebp, dword [esi]
xor ebx, ebx
mov bx, word [edi]
add edi, 2
add dword [ebp + edx], ebx
dec eax
jne 0x5f461d
jmp 0x5f4637
mov dword [eax + edx], 0
add edx, 4
add ecx, 2
lea eax, [esp + 0x28]
inc dword [esp + 0x14]
cmp ecx, eax
jb 0x5f4601
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x34]
xor ebx, ebx
cmp byte [ecx], bl
jbe 0x5f47a3
xor eax, eax
mov al, byte [edi]
test eax, eax
je 0x5f4676
cmp eax, 1
je 0x5f46b0
cmp eax, 2
je 0x5f472c
jmp 0x5f4792
xor ecx, ecx
cmp word [esp + 0x18], cx
jbe 0x5f469b
mov edx, dword [esp + 0x18]
and edx, 0xffff
mov al, byte [ecx + edi + 1]
mov ebp, dword [esi]
inc ecx
mov ebp, dword [ebp]
cmp ecx, edx
mov byte [ebp + ecx - 1], al
jb 0x5f4689
mov eax, dword [esp + 0x18]
inc dword [esp + 0x30]
and eax, 0xffff
inc eax
add edi, eax
jmp 0x5f4792
mov cx, word [edi + 1]
mov eax, dword [esi]
mov edx, dword [eax + 4]
xor eax, eax
mov word [edx], cx
xor ecx, ecx
mov ax, word [edi + 1]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
test eax, eax
je 0x5f46f8
mov al, byte [ecx + edi + 3]
mov edx, dword [esi]
inc ecx
mov ebp, dword [edx + 4]
mov byte [ebp + ecx + 0x41], al
xor eax, eax
mov ax, word [edi + 1]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
cmp eax, ecx
ja 0x5f46d4
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov byte [ecx + 0xff], 1
mov eax, dword [esi]
mov ecx, dword [eax + 4]
xor eax, eax
mov byte [ecx + 0x101], 1
mov ax, word [edi + 1]
inc dword [esp + 0x30]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
lea edi, [eax + edi + 2]
jmp 0x5f4792
call fcn.00604660
xor edx, edx
mov eax, 4
mov ecx, 0x13
sub ecx, edx
inc edx
shr ecx, 2
sub eax, ecx
lea ecx, [esp + eax*4 + 0x38]
xor eax, eax
mov al, byte [edx + edi + 2]
mov ebp, dword [ecx]
shl ebp, 8
or eax, ebp
cmp edx, 0x14
mov dword [ecx], eax
jb 0x5f4733
test byte [esp + 0x3b], 0x40
je 0x5f4776
and dword [esp + 0x38], 0xbfffffff
mov eax, dword [esi]
mov ecx, dword [eax + 8]
push ecx
push 1
jmp 0x5f477e
mov eax, dword [esi]
mov ecx, dword [eax + 8]
push ecx
push 0
lea edx, [esp + 0x40]
push 4
push 0x77d608
push edx
call fcn.006037c0
add esp, 0x14
mov ecx, dword [esp + 0x28]
inc ebx
xor eax, eax
mov al, byte [ecx]
cmp eax, ebx
ja 0x5f465b
mov ax, word [esp + 0x12]
mov edx, dword [esp + 0x150]
xor cx, cx
mov word [edx + 6], ax
movsx eax, cx
mov byte [esp + eax + 0x4c], cl
inc cx
cmp cx, 0x100
jl 0x5f47b6
xor di, di
xor eax, eax
mov byte [esp + 0x18], al
xor ebx, ebx
mov edx, dword [esp + 0x150]
mov bl, al
movsx eax, di
inc di
lea esi, [esp + eax + 0x4c]
xor eax, eax
mov cl, byte [esi]
mov al, byte [edx + ebx]
xor edx, edx
mov dl, cl
sub eax, edx
xor edx, edx
mov dl, byte [esp + 0x18]
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x18], al
xor eax, eax
mov al, byte [esp + 0x18]
lea edx, [esp + eax + 0x4c]
mov al, byte [edx]
mov byte [esi], al
lea eax, [ebx + 1]
mov byte [edx], cl
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
cmp di, 0x100
jl 0x5f47cf
xor ecx, ecx
mov byte [esp + 0x38], cl
mov byte [esp + 0x18], cl
movsx edi, cx
inc cx
xor eax, eax
mov al, byte [esp + 0x38]
inc eax
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x38], al
xor eax, eax
mov al, byte [esp + 0x38]
lea esi, [esp + eax + 0x4c]
xor eax, eax
mov al, byte [esp + 0x18]
mov bl, byte [esi]
movzx bp, bl
movzx edx, bp
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x18], al
xor eax, eax
mov al, byte [esp + 0x18]
lea edx, [esp + eax + 0x4c]
mov al, byte [edx]
mov byte [esi], al
xor eax, eax
mov byte [edx], bl
mov ebx, dword [esp + 0x150]
movsx edx, bp
mov al, byte [esi]
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
xor edx, edx
mov dl, al
mov al, byte [esp + edx + 0x4c]
xor byte [edi + ebx + 8], al
cmp cx, 4
jl 0x5f483a
xor eax, eax
mov word [esp + 0x38], ax
mov byte [esp + 0x18], al
mov byte [esp + 0x14], al
cmp dword [esp + 0x2c], eax
jle 0x5f497b
xor eax, eax
mov al, byte [esp + 0x18]
inc eax
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x18], al
xor eax, eax
mov al, byte [esp + 0x18]
lea ecx, [esp + eax + 0x4c]
xor eax, eax
mov al, byte [esp + 0x14]
mov bl, byte [ecx]
movzx di, bl
movzx edx, di
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov byte [esp + 0x14], al
xor eax, eax
mov al, byte [esp + 0x14]
lea edx, [esp + eax + 0x4c]
mov al, byte [edx]
mov byte [ecx], al
mov byte [edx], bl
xor edx, edx
movsx eax, di
movsx esi, word [esp + 0x38]
mov dl, byte [ecx]
xor ecx, ecx
add eax, edx
cdq
xor eax, edx
sub eax, edx
and eax, 0xff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x150]
mov cl, al
mov al, byte [esp + ecx + 0x4c]
xor byte [esi + edx + 0xc], al
inc word [esp + 0x38]
movsx ecx, word [esp + 0x38]
cmp ecx, dword [esp + 0x2c]
jl 0x5f48e2
mov eax, dword [esp + 0x30]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x13c
ret