Function at 0x423b49
Capabilities:
Encode data using xor

Disassembly:
jmp 0x423b40
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 0x423ba8
lea edi, [edx + 5]
cmp edx, edi
mov ecx, edx
jae 0x423ba8
movzx ebp, byte [ecx]
xor eax, ebp
add ecx, 1
rol eax, 5
cmp ecx, edi
jb 0x423b95
mov dword [esp + 0x60], eax
mov eax, ebx
sub eax, edx
cmp eax, 5
mov dword [esp + 0x10], eax
jl 0x4241f6
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 0x423bdc
mov dword [esp + 0x34], pe_nt_image_headers32
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 0x423c00
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 0x423de3
cmp ecx, ebp
je 0x423de3
mov eax, ebp
sub eax, ecx
mov ecx, dword [esp + 0x10]
and eax, 0xffff
sub ecx, ebx
cmp eax, ecx
mov edx, eax
jl 0x423c57
mov edx, ecx
cmp edx, 0x209
jge 0x423c67
cmp eax, ecx
jl 0x423c6c
mov eax, ecx
jmp 0x423c6c
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.00401e24
mov edi, eax
mov eax, dword [esp + 0x68]
lea ecx, [edi + eax]
and ecx, 0xffff
cmp ecx, ebp
jne 0x423cd8
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 0x423cb2
mov ecx, eax
mov dword [esp + 0x28], eax
jmp 0x423cb6
mov dword [esp + 0x28], ecx
xor eax, eax
test ecx, ecx
jle 0x423cd6
mov edx, dword [esp + 0x64]
lea ecx, [ebx + edx]
mov dl, byte [ecx]
cmp dl, byte [ecx + edi]
jne 0x423cd6
add eax, 1
add ecx, 1
cmp eax, dword [esp + 0x28]
jl 0x423cc3
add edi, eax
cmp edi, 3
jl 0x423de3
mov eax, 0x209
sub eax, edi
cmp eax, ebx
mov dword [esp + 0x14], eax
jl 0x423cf4
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 0x423d14
mov edx, dword [esp + 0x14]
mov dword [esp + 0x28], edx
jmp 0x423d18
mov dword [esp + 0x28], ecx
mov edx, 0x10000
sub edx, eax
cmp dword [esp + 0x28], edx
jge 0x423d2f
mov edx, dword [esp + 0x14]
cmp edx, ecx
jl 0x423d33
mov edx, ecx
mov dword [esp + 0x14], edx
xor eax, eax
test edx, edx
jle 0x423de3
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 0x423d60
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 0x423d8c
mov ecx, 1
sub dword [esp + 0x24], ecx
sub dword [esp + 0x28], ecx
add eax, ecx
cmp eax, dword [esp + 0x14]
jl 0x423d60
test eax, eax
jle 0x423de3
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 0x423dd7
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 0x423dc0
mov dword [esp + 0x60], ecx
mov dword [esp + 0x30], 1
mov eax, dword [esp + 0x20]
cmp eax, 4
jge 0x423e65
cmp edi, 4
jl 0x423e1d
cmp dword [esp + 0x30], 0
jne 0x424009
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 0x4240b0
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 0x423c00
cmp edi, eax
jle 0x423f2d
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.00401460
mov eax, dword [esp + 0x18]
sub eax, ebx
sub eax, dword [esp + 0x64]
lea ecx, [edi - 1]
add eax, 0xffffffff
cmp ecx, eax
jge 0x423ea1
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.004012a8
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
and eax, 0xffff
lea ecx, [eax + edi]
cmp ecx, 0x10000
jle 0x423f10
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.004510f0
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.004510f0
add dword [esi + 4], edi
add edi, ebx
add esp, 0x18
add dword [esp + 0x64], edi
jmp 0x4241e1
mov ecx, dword [esi]
push edi
add ecx, eax
push ebp
push ecx
call fcn.004510f0
add dword [esi + 4], edi
add edi, ebx
add esp, 0xc
add dword [esp + 0x64], edi
jmp 0x4241e1
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.00401460
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 0x423f89
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.004012a8
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 0x423fec
mov edi, 0x10000
sub edi, eax
push edi
push ebx
push edx
call fcn.004510f0
mov ecx, dword [esi]
mov eax, ebp
sub eax, edi
push eax
add edi, ebx
push edi
push ecx
call fcn.004510f0
mov eax, dword [esp + 0x34]
add dword [esi + 4], ebp
add eax, ebp
add esp, 0x18
add dword [esp + 0x64], eax
jmp 0x4241e1
push ebp
push ebx
push edx
call fcn.004510f0
mov eax, dword [esp + 0x28]
add dword [esi + 4], ebp
add eax, ebp
add esp, 0xc
add dword [esp + 0x64], eax
jmp 0x4241e1
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.00401460
mov eax, dword [esp + 0x18]
sub eax, ebx
sub eax, dword [esp + 0x64]
lea ecx, [edi - 1]
add eax, 0xffffffff
cmp ecx, eax
jge 0x42403d
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.004012a8
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
and eax, 0xffff
lea ecx, [eax + edi]
cmp ecx, 0x10000
jle 0x423f10
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.004510f0
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.004510f0
add dword [esi + 4], edi
add edi, ebx
add esp, 0x18
add dword [esp + 0x64], edi
jmp 0x4241e1
cmp eax, 4
jl 0x424162
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.00401460
mov eax, dword [esp + 0x18]
sub eax, ebx
sub eax, ebp
add eax, 0xffffffff
lea ecx, [edi - 1]
cmp ecx, eax
jge 0x4240f2
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.004012a8
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
and eax, 0xffff
lea ecx, [eax + edi]
cmp ecx, 0x10000
jle 0x423f10
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.004510f0
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.004510f0
add dword [esi + 4], edi
add edi, ebx
add esp, 0x18
add dword [esp + 0x64], edi
jmp 0x4241e1
lea edx, [ebx + 5]
cmp edx, dword [esp + 0x10]
jl 0x4241cc
cmp dword [esp + 0x10], 0x40
jg 0x4241cc
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 0x4241ba
mov ebx, 0x10000
sub ebx, eax
push ebx
push ebp
push edx
call fcn.004510f0
mov ecx, dword [esi]
mov eax, edi
sub eax, ebx
push eax
add ebx, ebp
push ebx
push ecx
call fcn.004510f0
add esp, 0x18
jmp 0x4241c5
push edi
push ebp
push edx
call fcn.004510f0
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.00402487
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 0x423bc0
mov edi, dword [esp + 0x10]
test edi, edi
je 0x424216
mov ebx, dword [esp + 0x64]
push edi
push ebx
mov ecx, esi
call fcn.0040253b
push edi
push ebx
lea ecx, [esp + 0x48]
call fcn.00402487
lea ecx, [esp + 0x40]
call fcn.00402072
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret 0xc