Function at 0x423819
Capabilities:
Encode data using xor

Disassembly:
jmp 0x423810
sub esp, 0x4c
mov edx, dword [esp + 0x54]
push ebx
push ebp
push esi
mov esi, ecx
mov ecx, dword [esi + 8]
lea eax, [esi + 8]
mov dword [esp + 0x3c], eax
add eax, 4
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], eax
xor eax, eax
cmp ecx, 5
lea ebx, [edx + ecx]
push edi
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x60], eax
jb 0x423878
lea edi, [edx + 5]
cmp edx, edi
mov ecx, edx
jae 0x423878
movzx ebp, byte [ecx]
xor eax, ebp
add ecx, 1
rol eax, 5
cmp ecx, edi
jb 0x423865
mov dword [esp + 0x60], eax
mov eax, ebx
sub eax, edx
cmp eax, 5
mov dword [esp + 0x10], eax
jl 0x423ec6
lea esp, [esp]
mov eax, dword [esp + 0x10]
add eax, 0xfffffffb
xor edi, edi
xor ebx, ebx
cmp eax, 0x40
mov dword [esp + 0x34], eax
jl 0x4238ac
mov dword [esp + 0x34], 0x40
mov dword [esp + 0x20], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x30], edi
jmp 0x4238d0
mov eax, dword [esp + 0x60]
mov edx, dword [esi + 0x14]
imul eax, eax, 0x343fd
mov ebp, dword [esi + 4]
add eax, 0x269ec3
shr eax, 0x11
movzx ecx, word [edx + eax*2]
lea eax, [edx + eax*2]
and ebp, 0xffff
cmp ecx, 0xffff
mov dword [esp + 0x68], ecx
mov word [eax], bp
je 0x423ab3
cmp ecx, ebp
je 0x423ab3
mov eax, ebp
sub eax, ecx
mov ecx, dword [esp + 0x10]
and eax, 0xffff
sub ecx, ebx
cmp eax, ecx
mov edx, eax
jl 0x423927
mov edx, ecx
cmp edx, 0x209
jge 0x423937
cmp eax, ecx
jl 0x42393c
mov eax, ecx
jmp 0x42393c
mov eax, 0x209
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
add ecx, ebx
push eax
push ecx
push edx
mov ecx, esi
call fcn.00401e88
mov edi, eax
mov eax, dword [esp + 0x68]
lea ecx, [edi + eax]
and ecx, 0xffff
cmp ecx, ebp
jne 0x4239a8
mov ecx, dword [esp + 0x10]
mov eax, edi
neg eax
mov edx, eax
sub edx, ebx
add ecx, edx
add eax, 0x209
cmp eax, ecx
jge 0x423982
mov ecx, eax
mov dword [esp + 0x28], eax
jmp 0x423986
mov dword [esp + 0x28], ecx
xor eax, eax
test ecx, ecx
jle 0x4239a6
mov edx, dword [esp + 0x64]
lea ecx, [ebx + edx]
mov dl, byte [ecx]
cmp dl, byte [ecx + edi]
jne 0x4239a6
add eax, 1
add ecx, 1
cmp eax, dword [esp + 0x28]
jl 0x423993
add edi, eax
cmp edi, 3
jl 0x423ab3
mov eax, 0x209
sub eax, edi
cmp eax, ebx
mov dword [esp + 0x14], eax
jl 0x4239c4
mov dword [esp + 0x14], ebx
mov eax, dword [esi + 4]
sub eax, dword [esp + 0x68]
and eax, 0xffff
mov ecx, eax
sub ecx, edi
cmp dword [esp + 0x14], ecx
jge 0x4239e4
mov edx, dword [esp + 0x14]
mov dword [esp + 0x28], edx
jmp 0x4239e8
mov dword [esp + 0x28], ecx
mov edx, 0x10000
sub edx, eax
cmp dword [esp + 0x28], edx
jge 0x4239ff
mov edx, dword [esp + 0x14]
cmp edx, ecx
jl 0x423a03
mov edx, ecx
mov dword [esp + 0x14], edx
xor eax, eax
test edx, edx
jle 0x423ab3
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
add ecx, 0xffffffff
mov dword [esp + 0x24], ecx
lea ecx, [ebx + edx]
add ecx, 0xffffffff
mov dword [esp + 0x28], ecx
jmp 0x423a30
mov edx, dword [esp + 0x24]
mov ecx, dword [esi]
and edx, 0xffff
mov cl, byte [edx + ecx]
mov edx, dword [esp + 0x28]
cmp cl, byte [edx]
jne 0x423a5c
mov ecx, 1
sub dword [esp + 0x24], ecx
sub dword [esp + 0x28], ecx
add eax, ecx
cmp eax, dword [esp + 0x14]
jl 0x423a30
test eax, eax
jle 0x423ab3
sub dword [esi + 4], eax
sub dword [esp + 0x68], eax
mov ecx, dword [esi + 4]
sub ebx, eax
add edi, eax
mov eax, dword [esp + 0x64]
and ecx, 0xffff
add eax, ebx
mov ebp, ecx
lea edx, [eax + 5]
xor ecx, ecx
cmp eax, edx
mov dword [esp + 0x60], eax
jae 0x423aa7
lea esp, [esp]
movzx eax, byte [eax]
xor ecx, eax
mov eax, dword [esp + 0x60]
add eax, 1
rol ecx, 5
cmp eax, edx
mov dword [esp + 0x60], eax
jb 0x423a90
mov dword [esp + 0x60], ecx
mov dword [esp + 0x30], 1
mov eax, dword [esp + 0x20]
cmp eax, 4
jge 0x423b35
cmp edi, 4
jl 0x423aed
cmp dword [esp + 0x30], 0
jne 0x423cd9
mov ecx, dword [esp + 0x68]
mov edx, dword [esi + 4]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x60]
mov eax, edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], ecx
lea edx, [ebx + 1]
cmp edx, dword [esp + 0x34]
jg 0x423d80
mov eax, dword [esp + 0x64]
mov cl, byte [ebx + eax]
movzx eax, byte [ebx + eax + 5]
movzx edi, cl
rol edi, 0x19
xor edi, eax
xor edi, dword [esp + 0x60]
mov eax, dword [esi + 4]
rol edi, 5
mov dword [esp + 0x60], edi
lea edi, [eax + 1]
mov dword [esi + 4], edi
mov edi, dword [esi]
and eax, 0xffff
mov byte [eax + edi], cl
mov ebx, edx
xor edi, edi
jmp 0x4238d0
cmp edi, eax
jle 0x423bfd
sub ebp, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
and ebp, 0xffff
push ebp
lea ecx, [edi - 4]
push ecx
push ebx
push edx
lea ecx, [esp + 0x50]
call fcn.00401415
mov eax, dword [esp + 0x18]
sub eax, ebx
sub eax, dword [esp + 0x64]
lea ecx, [edi - 1]
add eax, 0xffffffff
cmp ecx, eax
jge 0x423b71
mov eax, ecx
mov edx, dword [esi + 4]
mov ecx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x64]
add edx, 1
lea ebp, [ebx + ecx]
push edx
push ebp
push eax
mov ecx, esi
call fcn.00401262
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
and eax, 0xffff
lea ecx, [eax + edi]
cmp ecx, 0x10000
jle 0x423be0
mov edx, dword [esi]
mov ecx, 0x10000
sub ecx, eax
push ecx
add edx, eax
push ebp
push edx
mov dword [esp + 0x74], ecx
call fcn.0044ae00
mov eax, dword [esp + 0x74]
mov edx, dword [esi]
mov ecx, edi
sub ecx, eax
push ecx
add eax, ebp
push eax
push edx
call fcn.0044ae00
add dword [esi + 4], edi
add edi, ebx
add esp, 0x18
add dword [esp + 0x64], edi
jmp 0x423eb1
mov ecx, dword [esi]
push edi
add ecx, eax
push ebp
push ecx
call fcn.0044ae00
add dword [esi + 4], edi
add edi, ebx
add esp, 0xc
add dword [esp + 0x64], edi
jmp 0x423eb1
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x38]
mov dword [esi + 4], eax
movzx edi, byte [edx + ecx]
movzx ebp, byte [edx + ecx + 5]
sub eax, dword [esp + 0x2c]
lea ebx, [edx + ecx]
rol edi, 0x19
xor edi, ebp
mov ebp, dword [esp + 0x20]
xor edi, dword [esp + 0x3c]
and eax, 0xffff
push eax
lea eax, [ebp - 4]
push eax
push edx
push ecx
lea ecx, [esp + 0x50]
rol edi, 5
call fcn.00401415
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x1c]
lea ecx, [ebp - 2]
sub eax, dword [esp + 0x64]
add eax, 0xfffffffe
cmp ecx, eax
jge 0x423c59
mov eax, ecx
mov ecx, dword [esi + 4]
push eax
add ecx, 2
push ecx
lea edx, [ebx + 1]
push edx
push edi
mov ecx, esi
call fcn.00401262
mov edx, dword [esi]
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
and eax, 0xffff
lea ecx, [eax + ebp]
add edx, eax
cmp ecx, 0x10000
jle 0x423cbc
mov edi, 0x10000
sub edi, eax
push edi
push ebx
push edx
call fcn.0044ae00
mov ecx, dword [esi]
mov eax, ebp
sub eax, edi
push eax
add edi, ebx
push edi
push ecx
call fcn.0044ae00
mov eax, dword [esp + 0x34]
add dword [esi + 4], ebp
add eax, ebp
add esp, 0x18
add dword [esp + 0x64], eax
jmp 0x423eb1
push ebp
push ebx
push edx
call fcn.0044ae00
mov eax, dword [esp + 0x28]
add dword [esi + 4], ebp
add eax, ebp
add esp, 0xc
add dword [esp + 0x64], eax
jmp 0x423eb1
sub ebp, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
and ebp, 0xffff
push ebp
lea ecx, [edi - 4]
push ecx
push ebx
push edx
lea ecx, [esp + 0x50]
call fcn.00401415
mov eax, dword [esp + 0x18]
sub eax, ebx
sub eax, dword [esp + 0x64]
lea ecx, [edi - 1]
add eax, 0xffffffff
cmp ecx, eax
jge 0x423d0d
mov eax, ecx
mov edx, dword [esi + 4]
mov ecx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x64]
add edx, 1
lea ebp, [ebx + ecx]
push edx
push ebp
push eax
mov ecx, esi
call fcn.00401262
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
and eax, 0xffff
lea ecx, [eax + edi]
cmp ecx, 0x10000
jle 0x423be0
mov edx, dword [esi]
mov ecx, 0x10000
sub ecx, eax
push ecx
add edx, eax
push ebp
push edx
mov dword [esp + 0x74], ecx
call fcn.0044ae00
mov eax, dword [esp + 0x74]
mov edx, dword [esi]
mov ecx, edi
sub ecx, eax
push ecx
add eax, ebp
push eax
push edx
call fcn.0044ae00
add dword [esi + 4], edi
add edi, ebx
add esp, 0x18
add dword [esp + 0x64], edi
jmp 0x423eb1
cmp eax, 4
jl 0x423e32
mov edx, dword [esi + 4]
sub edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x64]
and edx, 0xffff
push edx
lea eax, [edi - 4]
push eax
push ebx
push ebp
lea ecx, [esp + 0x50]
call fcn.00401415
mov eax, dword [esp + 0x18]
sub eax, ebx
sub eax, ebp
add eax, 0xffffffff
lea ecx, [edi - 1]
cmp ecx, eax
jge 0x423dc2
mov eax, ecx
mov edx, dword [esi + 4]
mov ecx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x64]
add edx, 1
lea ebp, [ebx + ecx]
push edx
push ebp
push eax
mov ecx, esi
call fcn.00401262
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
and eax, 0xffff
lea ecx, [eax + edi]
cmp ecx, 0x10000
jle 0x423be0
mov edx, dword [esi]
mov ecx, 0x10000
sub ecx, eax
push ecx
add edx, eax
push ebp
push edx
mov dword [esp + 0x74], ecx
call fcn.0044ae00
mov eax, dword [esp + 0x74]
mov edx, dword [esi]
mov ecx, edi
sub ecx, eax
push ecx
add eax, ebp
push eax
push edx
call fcn.0044ae00
add dword [esi + 4], edi
add edi, ebx
add esp, 0x18
add dword [esp + 0x64], edi
jmp 0x423eb1
lea edx, [ebx + 5]
cmp edx, dword [esp + 0x10]
jl 0x423e9c
cmp dword [esp + 0x10], 0x40
jg 0x423e9c
mov eax, dword [esp + 0x64]
mov edi, dword [esp + 0x10]
mov edx, dword [esi]
lea ebp, [ebx + eax]
mov eax, dword [esi + 4]
and eax, 0xffff
sub edi, ebx
lea ecx, [eax + edi]
add edx, eax
cmp ecx, 0x10000
jle 0x423e8a
mov ebx, 0x10000
sub ebx, eax
push ebx
push ebp
push edx
call fcn.0044ae00
mov ecx, dword [esi]
mov eax, edi
sub eax, ebx
push eax
add ebx, ebp
push ebx
push ecx
call fcn.0044ae00
add esp, 0x18
jmp 0x423e95
push edi
push ebp
push edx
call fcn.0044ae00
add esp, 0xc
add dword [esi + 4], edi
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x64]
push ebx
push edi
lea ecx, [esp + 0x48]
call fcn.004015eb
add edi, ebx
mov dword [esp + 0x64], edi
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x64]
cmp eax, 5
mov dword [esp + 0x10], eax
jge 0x423890
mov edi, dword [esp + 0x10]
test edi, edi
je 0x423ee6
mov ebx, dword [esp + 0x64]
push edi
push ebx
mov ecx, esi
call fcn.00401735
push edi
push ebx
lea ecx, [esp + 0x48]
call fcn.004015eb
lea ecx, [esp + 0x40]
call fcn.004020a4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret 0xc