Function at 0x447cd0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x158
push ebx
push ebp
push esi
mov esi, dword [esp + 0x168]
mov ebx, ecx
test esi, esi
mov dword [esp + 0x20], ebx
je 0x4482e1
mov ebp, dword [esp + 0x16c]
test ebp, ebp
je 0x4482e1
jbe 0x4482e1
push edi
jmp 0x447d0d
mov esi, dword [esp + 0x16c]
mov ecx, dword [ebx + 0x24]
test ecx, ecx
jne 0x448269
cmp ebp, 0x40
jb 0x448269
lea edi, [ebx + 0x28]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0x28]
lea esi, [ebx + 0x29]
mov ebp, 0x10
xor eax, eax
xor ecx, ecx
mov ah, byte [esi - 1]
mov cl, byte [esi + 1]
mov al, byte [esi]
xor edx, edx
mov dl, byte [esi + 2]
add esi, 4
shl eax, 8
or eax, ecx
add edi, 4
shl eax, 8
or eax, edx
dec ebp
mov dword [edi - 4], eax
jne 0x447d37
mov ebp, dword [ebx + 0x10]
mov edi, dword [ebx + 0x14]
mov esi, dword [ebx + 0x18]
mov edx, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x1c], ebp
lea eax, [esp + 0x30]
mov dword [esp + 0x14], 0x40
mov ebx, dword [eax + 0x2c]
xor ebx, dword [eax + 0x18]
add eax, 4
xor ebx, dword [eax - 0xc]
xor ebx, dword [eax - 4]
rol ebx, 1
mov dword [eax + 0x34], ebx
mov ebx, dword [esp + 0x14]
dec ebx
mov dword [esp + 0x14], ebx
jne 0x447d7d
lea ebx, [esp + 0x28]
xor eax, eax
mov dword [esp + 0x10], ebx
mov ebx, edx
xor ebx, esi
and ebx, edi
rol ebp, 5
xor ebx, edx
add ebp, ebx
mov ebx, dword [esp + 0x10]
add ebp, dword [ebx]
add ebx, 4
rol edi, 0x1e
mov dword [esp + 0x18], edi
add ebx, 4
lea ecx, [ecx + ebp + 0x5a827999]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
add ebx, 4
rol ecx, 5
mov dword [esp + 0x14], ecx
mov ecx, esi
xor ecx, edi
mov edi, dword [esp + 0x14]
and ecx, ebp
add ebx, 4
xor ecx, esi
inc eax
add edi, ecx
mov ecx, dword [ebx - 0xc]
add edi, ecx
mov ecx, dword [esp + 0x18]
rol ebp, 0x1e
lea edx, [edx + edi + 0x5a827999]
mov edi, dword [esp + 0x10]
xor ecx, ebp
mov dword [esp + 0x14], edx
and ecx, edi
mov edi, dword [esp + 0x18]
rol edx, 5
xor ecx, edi
mov edi, dword [ebx - 8]
add edx, ecx
mov ecx, dword [esp + 0x10]
add edx, edi
mov dword [esp + 0x1c], ebp
rol ecx, 0x1e
mov edi, ecx
lea esi, [esi + edx + 0x5a827999]
mov edx, dword [esp + 0x14]
xor edi, ebp
and edi, edx
mov dword [esp + 0x20], esi
rol esi, 5
xor edi, ebp
mov ebp, ecx
add esi, edi
mov edi, dword [ebx - 4]
add esi, edi
mov edi, dword [esp + 0x18]
rol edx, 0x1e
lea edi, [edi + esi + 0x5a827999]
mov esi, dword [esp + 0x20]
xor ebp, edx
mov dword [esp + 0x10], ebx
mov ebx, edi
and ebp, esi
rol ebx, 5
xor ebp, ecx
inc eax
add ebx, ebp
mov ebp, dword [esp + 0x10]
inc eax
mov dword [esp + 0x18], edi
add ebx, dword [ebp]
mov ebp, dword [esp + 0x1c]
inc eax
inc eax
lea ebp, [ebx + ebp + 0x5a827999]
mov ebx, dword [esp + 0x10]
add ebx, 4
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x10], ebx
rol esi, 0x1e
cmp eax, 0x14
mov dword [esp + 0x20], esi
jb 0x447da6
cmp eax, 0x28
jae 0x447fb1
lea ebx, [esp + eax*4 + 0x28]
mov dword [esp + 0x10], ebx
mov ebx, edx
xor ebx, esi
xor ebx, edi
rol ebp, 5
add ebp, ebx
mov ebx, dword [esp + 0x10]
add ebp, dword [ebx]
add ebx, 4
rol edi, 0x1e
mov dword [esp + 0x18], edi
add ebx, 4
lea ecx, [ecx + ebp + 0x6ed9eba1]
add ebx, 4
mov ebp, ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x1c]
add ebx, 4
rol ebp, 5
mov dword [esp + 0x14], ebp
mov ebp, esi
xor ebp, edi
mov edi, dword [esp + 0x14]
xor ebp, ecx
inc eax
add edi, ebp
mov ebp, dword [ebx - 0xc]
add edi, ebp
mov ebp, dword [esp + 0x10]
rol ecx, 0x1e
lea edx, [edx + edi + 0x6ed9eba1]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
xor ebp, edi
mov edi, dword [esp + 0x1c]
mov ecx, edx
rol ecx, 5
xor ebp, edi
inc eax
add ecx, ebp
mov ebp, dword [ebx - 8]
add ecx, ebp
inc eax
lea esi, [esi + ecx + 0x6ed9eba1]
mov ecx, dword [esp + 0x10]
rol ecx, 0x1e
mov ebp, ecx
mov dword [esp + 0x20], esi
xor ebp, edx
mov dword [esp + 0x10], ebx
rol esi, 5
xor ebp, edi
mov edi, dword [ebx - 4]
add esi, ebp
mov ebp, ecx
add esi, edi
mov edi, dword [esp + 0x18]
rol edx, 0x1e
lea edi, [edi + esi + 0x6ed9eba1]
mov esi, dword [esp + 0x20]
mov ebx, edi
xor ebp, edx
rol ebx, 5
xor ebp, esi
inc eax
add ebx, ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x18], edi
add ebx, dword [ebp]
mov ebp, dword [esp + 0x1c]
inc eax
lea ebp, [ebx + ebp + 0x6ed9eba1]
mov ebx, dword [esp + 0x10]
add ebx, 4
mov dword [esp + 0x1c], ebp
rol esi, 0x1e
cmp eax, 0x28
mov dword [esp + 0x10], ebx
mov dword [esp + 0x20], esi
jb 0x447ebb
cmp eax, 0x3c
jae 0x4480e6
lea ebx, [esp + eax*4 + 0x28]
mov dword [esp + 0x14], ebx
jmp 0x447fc8
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
rol ebp, 5
mov dword [esp + 0x10], ebp
mov ebp, esi
or ebp, edi
and esi, edi
and ebp, edx
add ebx, 4
or ebp, esi
mov esi, dword [ebx - 4]
add ebp, esi
mov esi, dword [esp + 0x1c]
add ebp, ecx
mov ecx, dword [esp + 0x10]
rol edi, 0x1e
lea ecx, [ecx + ebp - 0x70e44324]
mov ebp, edi
or ebp, esi
mov dword [esp + 0x18], edi
and ebp, dword [esp + 0x20]
and edi, esi
mov dword [esp + 0x10], ecx
add ebx, 4
or ebp, edi
mov edi, dword [ebx - 4]
add ebp, edi
add ebx, 4
rol ecx, 5
add ebp, edx
add ebx, 4
rol esi, 0x1e
lea ecx, [ecx + ebp - 0x70e44324]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
mov edx, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], esi
mov edi, ecx
inc eax
or edi, esi
inc eax
and edi, ebp
mov ebp, ecx
and ebp, esi
or edi, ebp
mov ebp, dword [ebx - 8]
add edi, ebp
mov ebp, dword [esp + 0x20]
rol edx, 5
add edi, ebp
inc eax
rol ecx, 0x1e
lea edx, [edi + edx - 0x70e44324]
mov ebp, ecx
mov dword [esp + 0x20], edx
mov edi, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x14], ebx
or ebp, edx
and ebp, esi
mov esi, ecx
and esi, edx
or ebp, esi
mov esi, dword [ebx - 4]
add ebp, esi
mov esi, dword [esp + 0x18]
rol edi, 5
add ebp, esi
inc eax
rol edx, 0x1e
lea esi, [edi + ebp - 0x70e44324]
mov ebp, edx
mov dword [esp + 0x18], esi
mov ebx, esi
mov esi, dword [esp + 0x20]
mov edi, edx
or ebp, esi
and edi, esi
and ebp, ecx
rol ebx, 5
or ebp, edi
mov edi, dword [esp + 0x14]
add ebp, dword [edi]
add edi, 4
mov dword [esp + 0x14], edi
add ebp, dword [esp + 0x1c]
inc eax
rol esi, 0x1e
cmp eax, 0x3c
mov dword [esp + 0x20], esi
lea ebp, [ebx + ebp - 0x70e44324]
mov dword [esp + 0x1c], ebp
jb 0x447fc4
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
jmp 0x4480ea
mov ebx, dword [esp + 0x24]
cmp eax, 0x50
jae 0x448208
lea ebx, [esp + eax*4 + 0x28]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x14]
rol ebp, 5
mov dword [esp + 0x10], ebp
mov ebp, edx
xor ebp, esi
add ebx, 4
xor ebp, edi
mov edi, dword [ebx - 4]
add ebp, edi
add ebx, 4
add ebp, ecx
mov ecx, dword [esp + 0x10]
add ebx, 4
inc eax
lea edi, [ecx + ebp - 0x359d3e2a]
mov ecx, dword [esp + 0x18]
mov ebp, edi
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x1c]
add ebx, 4
rol ecx, 0x1e
rol ebp, 5
mov dword [esp + 0x14], ebp
mov ebp, esi
xor ebp, ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [ebx - 0xc]
xor ebp, edi
add ebp, ecx
add ebp, edx
mov edx, dword [esp + 0x14]
rol edi, 0x1e
lea ecx, [edx + ebp - 0x359d3e2a]
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
xor edx, ebp
mov ebp, dword [ebx - 8]
xor edx, edi
mov dword [esp + 0x1c], edi
add edx, ebp
inc eax
rol ecx, 5
add edx, esi
inc eax
lea edx, [edx + ecx - 0x359d3e2a]
mov ecx, dword [esp + 0x10]
rol ecx, 0x1e
mov dword [esp + 0x20], edx
mov esi, edx
mov edx, dword [esp + 0x14]
mov ebp, ecx
xor ebp, edx
mov dword [esp + 0x14], ebx
xor ebp, edi
mov edi, dword [ebx - 4]
add ebp, edi
mov edi, dword [esp + 0x18]
rol esi, 5
add ebp, edi
mov ebx, ecx
rol edx, 0x1e
lea edi, [esi + ebp - 0x359d3e2a]
mov ebp, dword [esp + 0x20]
xor ebx, edx
mov esi, edi
xor ebx, ebp
mov ebp, dword [esp + 0x14]
rol esi, 5
add ebx, dword [ebp]
mov ebp, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x18], edi
add ebx, ebp
inc eax
lea ebp, [ebx + esi - 0x359d3e2a]
mov esi, dword [esp + 0x14]
add esi, 4
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x20]
rol esi, 0x1e
cmp eax, 0x50
jb 0x4480fb
mov ebx, dword [esp + 0x24]
mov eax, dword [ebx + 0x10]
add eax, ebp
mov ebp, dword [esp + 0x170]
mov dword [ebx + 0x10], eax
mov eax, dword [ebx + 0x14]
add eax, edi
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 0x18]
add eax, esi
mov esi, dword [ebx + 8]
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x1c]
add eax, edx
mov dword [ebx + 0x1c], eax
mov eax, dword [ebx + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x16c]
add esi, 0x200
mov dword [ebx + 0x20], eax
mov dword [ebx + 8], esi
mov edx, dword [ebx + 0xc]
adc edx, 0
add ecx, 0x40
sub ebp, 0x40
mov dword [ebx + 0xc], edx
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x170], ebp
jmp 0x4482d8
mov eax, 0x40
sub eax, ecx
cmp ebp, eax
jae 0x448276
mov eax, ebp
mov edx, dword [ebx + 0x24]
mov ecx, eax
sub ebp, eax
lea edi, [edx + ebx + 0x28]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x170], ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebx + 0x24]
mov esi, dword [esp + 0x16c]
add edi, eax
add esi, eax
mov ecx, edi
mov dword [ebx + 0x24], edi
cmp ecx, 0x40
mov dword [esp + 0x16c], esi
jne 0x4482d8
mov ecx, ebx
call fcn.004477c0
mov edx, dword [ebx + 8]
mov eax, 0
add edx, 0x200
mov dword [ebx + 0x24], eax
mov dword [ebx + 8], edx
mov ecx, dword [ebx + 0xc]
adc ecx, eax
mov dword [ebx + 0xc], ecx
test ebp, ebp
ja 0x447d06
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x158
ret 8