Function at 0x40c060
Capabilities:
Encode data using xor

Disassembly:
push ebx
push edi
push esi
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
movzx eax, byte [0x43000c]
cmp al, 1
je 0x40c09d
movzx eax, al
cmp eax, 0xff
je 0x40c08c
pop esi
pop edi
pop ebx
jmp 0x40c320
mov edi, edx
mov ebx, ecx
call fcn.004264a0
mov ecx, ebx
mov edx, edi
test al, al
je 0x40c084
push esi
call fcn.0040c0b0
add esp, 4
pop esi
pop edi
pop ebx
ret
push ebp
push ebx
push edi
push esi
sub esp, 0x68
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x84]
mov edx, dword [eax]
mov esi, dword [eax + 8]
mov ebp, dword [eax + 4]
mov ebx, dword [eax + 0xc]
mov edi, dword [eax + 0x10]
test ecx, ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], esi
je 0x40d3b5
mov eax, ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x58], edi
shl eax, 6
add eax, ecx
mov dword [esp + 0x60], eax
nop word cs:[eax + eax]
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
mov dword [esp + 0x3c], ecx
mov edx, ebp
mov dword [esp + 0x5c], ebp
mov ebp, dword [ecx]
mov ecx, ebx
mov edi, ebx
mov dword [esp + 0x64], ebx
rol eax, 5
xor ecx, esi
bswap ebp
mov dword [esp + 0x54], esi
add eax, dword [esp + 0x58]
and ecx, edx
rol edx, 0x1e
mov dword [esp + 8], ebp
xor ecx, ebx
add eax, ecx
mov ecx, dword [esp + 0x3c]
lea ebp, [ebp + eax + 0x5a827999]
mov eax, ebp
rol eax, 5
mov ebx, dword [ecx + 4]
mov ecx, edx
xor ecx, esi
and ecx, dword [esp + 0x50]
bswap ebx
mov dword [esp + 0x18], ebx
xor ecx, esi
add ecx, edi
add ecx, ebx
lea edi, [eax + ecx + 0x5a827999]
mov eax, dword [esp + 0x3c]
mov ecx, edx
mov eax, dword [eax + 8]
bswap eax
mov ebx, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x50]
add esi, ebx
rol eax, 0x1e
xor ecx, eax
and ecx, ebp
rol ebp, 0x1e
xor ecx, edx
add ecx, esi
mov esi, edi
rol esi, 5
lea ecx, [esi + ecx + 0x5a827999]
mov esi, dword [esp + 0x3c]
mov esi, dword [esi + 0xc]
bswap esi
mov ebx, esi
mov dword [esp + 0x2c], esi
mov esi, ebp
xor esi, eax
add edx, ebx
and esi, edi
rol edi, 0x1e
xor esi, eax
add edx, esi
mov esi, ecx
rol esi, 5
lea edx, [esi + edx + 0x5a827999]
mov esi, dword [esp + 0x3c]
mov esi, dword [esi + 0x10]
bswap esi
mov ebx, esi
mov dword [esp + 0x14], esi
mov esi, edi
xor esi, ebp
add eax, ebx
and esi, ecx
rol ecx, 0x1e
xor esi, ebp
add eax, esi
mov esi, edx
rol esi, 5
lea esi, [esi + eax + 0x5a827999]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0x14]
bswap eax
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, ecx
xor eax, edi
add ebp, ebx
and eax, edx
rol edx, 0x1e
xor eax, edi
add ebp, eax
mov eax, esi
rol eax, 5
lea ebp, [eax + ebp + 0x5a827999]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0x18]
bswap eax
mov ebx, eax
mov dword [esp + 0x38], eax
mov eax, edx
xor eax, ecx
add edi, ebx
and eax, esi
rol esi, 0x1e
xor eax, ecx
add edi, eax
mov eax, ebp
rol eax, 5
lea eax, [eax + edi + 0x5a827999]
mov edi, dword [esp + 0x3c]
mov edi, dword [edi + 0x1c]
bswap edi
mov ebx, edi
mov dword [esp + 0x44], edi
mov edi, esi
add ecx, ebx
mov ebx, dword [esp + 0x3c]
xor edi, edx
and edi, ebp
rol ebp, 0x1e
xor edi, edx
add ecx, edi
mov edi, eax
mov ebx, dword [ebx + 0x20]
rol edi, 5
lea ecx, [edi + ecx + 0x5a827999]
mov edi, ebp
xor edi, esi
and edi, eax
bswap ebx
xor edi, esi
add edx, ebx
mov dword [esp + 0x10], ebx
add edx, edi
mov edi, ecx
rol edi, 5
lea edi, [edi + edx + 0x5a827999]
mov edx, eax
mov eax, dword [esp + 0x3c]
rol edx, 0x1e
mov eax, dword [eax + 0x24]
bswap eax
mov ebx, eax
mov dword [esp + 0x24], eax
mov eax, edx
xor eax, ebp
add esi, ebx
and eax, ecx
rol ecx, 0x1e
xor eax, ebp
mov ebx, ecx
add esi, eax
mov eax, edi
xor ebx, edx
rol eax, 5
and ebx, edi
rol edi, 0x1e
lea eax, [eax + esi + 0x5a827999]
mov esi, dword [esp + 0x3c]
xor ebx, edx
mov esi, dword [esi + 0x28]
bswap esi
mov dword [esp + 0x34], esi
add esi, ebp
mov ebp, dword [esp + 0x3c]
add ebx, esi
mov esi, eax
rol esi, 5
lea ebx, [esi + ebx + 0x5a827999]
mov esi, dword [esp + 0x3c]
mov ebp, dword [ebp + 0x30]
mov esi, dword [esi + 0x2c]
bswap ebp
mov dword [esp + 0x20], ebp
bswap esi
mov dword [esp + 0x30], esi
add edx, esi
mov esi, edi
xor esi, ecx
and esi, eax
rol eax, 0x1e
xor esi, ecx
add ecx, ebp
add esi, edx
mov edx, ebx
rol edx, 5
lea edx, [edx + esi + 0x5a827999]
mov esi, eax
xor esi, edi
and esi, ebx
xor esi, edi
add ecx, esi
mov esi, edx
rol esi, 5
lea esi, [esi + ecx + 0x5a827999]
mov ecx, ebx
mov ebx, dword [esp + 0x3c]
rol ecx, 0x1e
mov ebx, dword [ebx + 0x34]
bswap ebx
mov ebp, ebx
mov ebx, ecx
xor ebx, eax
add edi, ebp
mov dword [esp + 0x28], ebp
and ebx, edx
rol edx, 0x1e
xor ebx, eax
add edi, ebx
mov ebx, esi
rol ebx, 5
lea edi, [ebx + edi + 0x5a827999]
mov ebx, dword [esp + 0x3c]
mov ebx, dword [ebx + 0x38]
bswap ebx
mov dword [esp + 0x40], ebx
add eax, ebx
mov ebx, edx
xor ebx, ecx
and ebx, esi
rol esi, 0x1e
xor ebx, ecx
add ebx, eax
mov eax, edi
rol eax, 5
lea ebx, [eax + ebx + 0x5a827999]
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], ebx
rol ebx, 5
mov eax, dword [eax + 0x3c]
bswap eax
mov dword [esp + 0x48], eax
add eax, ecx
mov ecx, esi
xor ecx, edx
and ecx, edi
rol edi, 0x1e
xor ecx, edx
add ecx, eax
lea eax, [ebx + ecx + 0x5a827999]
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0xc]
mov dword [esp], eax
mov eax, dword [esp + 0x10]
xor ecx, ebx
xor eax, ebp
xor eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
xor ecx, dword [esp + 0x2c]
xor eax, dword [esp + 0x40]
xor eax, ecx
mov ecx, ebx
mov ebx, dword [esp + 4]
mov ebp, eax
mov eax, dword [esp + 0x34]
xor ecx, dword [esp + 0x14]
rol ebp, 1
mov dword [esp + 0x18], ebp
xor eax, dword [esp + 0x48]
xor eax, ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0xc], eax
mov eax, edi
xor eax, esi
and eax, ebx
rol ebx, 0x1e
rol ecx, 1
xor eax, esi
add esi, ebp
add edx, ecx
mov dword [esp + 8], ecx
mov ecx, dword [esp]
add edx, eax
mov eax, ecx
rol eax, 5
lea eax, [eax + edx + 0x5a827999]
mov edx, ebx
xor edx, edi
and edx, ecx
rol ecx, 0x1e
xor edx, edi
mov ebp, ecx
add esi, edx
mov edx, eax
mov dword [esp], ebp
rol edx, 5
lea esi, [edx + esi + 0x5a827999]
mov edx, dword [esp + 0xc]
rol edx, 1
mov dword [esp + 0xc], edx
add edx, edi
mov edi, ecx
xor edi, ebx
and edi, eax
rol eax, 0x1e
xor edi, ebx
add edi, edx
mov edx, esi
rol edx, 5
lea edx, [edx + edi + 0x5a827999]
mov edi, dword [esp + 0x2c]
xor edi, dword [esp + 0x1c]
xor edi, dword [esp + 0x30]
xor edi, dword [esp + 8]
rol edi, 1
add ebx, edi
mov ecx, edi
mov dword [esp + 0x2c], edi
mov edi, eax
xor edi, ebp
and edi, esi
rol esi, 0x1e
xor edi, ebp
add edi, ebx
mov ebx, dword [esp + 0x38]
xor dword [esp + 0x14], ebx
xor ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x40]
xor ebx, ecx
rol ebx, 1
mov ecx, ebx
mov dword [esp + 0x38], ebx
mov ebx, edx
rol ebx, 0x1e
add ecx, esi
mov ebp, ebx
mov dword [esp + 4], ecx
mov ecx, dword [esp]
xor ebp, esi
xor esi, eax
xor esi, edx
rol edx, 5
lea edx, [edx + edi + 0x5a827999]
mov edi, dword [esp + 0x14]
xor ebp, edx
xor edi, dword [esp + 0x20]
xor edi, dword [esp + 0x18]
rol edi, 1
add ecx, edi
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x44]
add ecx, esi
mov esi, edx
rol edx, 0x1e
rol esi, 5
lea ecx, [esi + ecx + 0x6ed9eba1]
mov esi, dword [esp + 0x1c]
xor esi, edi
xor esi, dword [esp + 0x28]
xor esi, dword [esp + 0xc]
rol esi, 1
add eax, esi
mov dword [esp + 0x1c], esi
mov esi, ecx
add eax, ebp
rol esi, 5
lea eax, [esi + eax + 0x6ed9eba1]
mov esi, edi
xor esi, dword [esp + 0x24]
xor esi, dword [esp + 0x48]
xor esi, dword [esp + 0x14]
rol esi, 1
lea edi, [esi + ebx]
xor ebx, edx
mov ebp, esi
mov dword [esp + 0x44], esi
mov esi, eax
xor ebx, ecx
rol esi, 5
add ebx, dword [esp + 4]
lea esi, [esi + ebx + 0x6ed9eba1]
mov ebx, ecx
mov ecx, dword [esp + 0x34]
rol ebx, 0x1e
mov dword [esp + 4], ebx
xor ebx, edx
xor ebx, eax
rol eax, 0x1e
xor dword [esp + 0x10], ecx
xor ecx, dword [esp + 0x20]
add ebx, edi
mov edi, esi
rol edi, 0x1e
xor ecx, dword [esp + 0xc]
xor ecx, ebp
mov ebp, edi
rol ecx, 1
xor ebp, eax
mov dword [esp + 0x34], ecx
add ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp + 4]
xor eax, ecx
xor eax, esi
rol esi, 5
lea esi, [esi + ebx + 0x6ed9eba1]
mov ebx, dword [esp + 0x10]
xor ebp, esi
xor ebx, dword [esp + 8]
xor ebx, dword [esp + 0x1c]
rol ebx, 1
add edx, ebx
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x30]
add edx, eax
mov eax, esi
rol esi, 0x1e
rol eax, 5
lea eax, [eax + edx + 0x6ed9eba1]
mov edx, dword [esp + 0x24]
xor edx, ebx
xor ebx, dword [esp + 0x28]
xor edx, dword [esp + 0x18]
xor ebx, dword [esp + 0x2c]
xor edx, dword [esp + 0x38]
xor ebx, dword [esp + 0x10]
rol edx, 1
add ecx, edx
mov dword [esp + 0x24], edx
mov edx, eax
add ecx, ebp
rol edx, 5
rol ebx, 1
lea ecx, [edx + ecx + 0x6ed9eba1]
lea ebp, [ebx + edi]
xor edi, esi
mov dword [esp + 0x30], ebx
mov ebx, eax
mov edx, ecx
xor edi, eax
mov eax, dword [esp + 0x40]
rol ebx, 0x1e
rol edx, 5
add edi, dword [esp]
mov dword [esp + 4], ebx
xor ebx, esi
xor ebx, ecx
rol ecx, 0x1e
add ebx, ebp
xor dword [esp + 0x20], eax
xor eax, dword [esp + 8]
lea edx, [edx + edi + 0x6ed9eba1]
mov edi, edx
rol edi, 0x1e
xor eax, dword [esp + 0x38]
mov ebp, edi
xor ebp, ecx
xor eax, dword [esp + 0x30]
rol eax, 1
mov dword [esp + 0x40], eax
add eax, ecx
mov dword [esp], eax
mov eax, dword [esp + 4]
xor ecx, eax
xor ecx, edx
rol edx, 5
lea edx, [edx + ebx + 0x6ed9eba1]
mov ebx, dword [esp + 0x20]
xor ebp, edx
xor ebx, dword [esp + 0x14]
xor ebx, dword [esp + 0x24]
rol ebx, 1
add esi, ebx
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x48]
add esi, ecx
mov ecx, edx
rol edx, 0x1e
rol ecx, 5
lea ecx, [ecx + esi + 0x6ed9eba1]
mov esi, dword [esp + 0x28]
xor esi, ebx
xor esi, dword [esp + 0x1c]
xor esi, dword [esp + 0x34]
rol esi, 1
add eax, esi
mov dword [esp + 0x28], esi
mov esi, ecx
add eax, ebp
rol esi, 5
lea eax, [esi + eax + 0x6ed9eba1]
mov esi, ebx
xor esi, dword [esp + 0x18]
xor esi, dword [esp + 0x44]
xor esi, dword [esp + 0x20]
rol esi, 1
lea ebx, [esi + edi]
xor edi, edx
mov ebp, esi
mov dword [esp + 0x48], esi
mov esi, eax
xor edi, ecx
rol esi, 5
add edi, dword [esp]
lea esi, [esi + edi + 0x6ed9eba1]
mov edi, ecx
mov ecx, dword [esp + 0xc]
rol edi, 0x1e
mov dword [esp + 4], edi
xor edi, edx
xor edi, eax
rol eax, 0x1e
xor dword [esp + 8], ecx
xor ecx, dword [esp + 0x14]
add edi, ebx
mov ebx, esi
rol ebx, 0x1e
xor ecx, dword [esp + 0x34]
xor ecx, ebp
mov ebp, ebx
rol ecx, 1
xor ebp, eax
mov dword [esp + 0xc], ecx
add ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp + 4]
xor eax, ecx
xor eax, esi
rol esi, 5
lea edi, [esi + edi + 0x6ed9eba1]
mov esi, dword [esp + 8]
xor ebp, edi
xor esi, dword [esp + 0x10]
xor esi, dword [esp + 0x28]
rol esi, 1
add edx, esi
mov dword [esp + 8], esi
mov esi, dword [esp + 0x2c]
add edx, eax
mov eax, edi
rol edi, 0x1e
rol eax, 5
lea eax, [eax + edx + 0x6ed9eba1]
mov edx, dword [esp + 0x18]
xor edx, esi
xor esi, dword [esp + 0x1c]
xor edx, dword [esp + 0x24]
xor esi, dword [esp + 0x30]
xor edx, dword [esp + 0x40]
xor esi, dword [esp + 8]
rol edx, 1
add ecx, edx
mov dword [esp + 0x18], edx
mov edx, eax
add ecx, ebp
rol edx, 5
rol esi, 1
lea ecx, [edx + ecx + 0x6ed9eba1]
lea ebp, [esi + ebx]
xor ebx, edi
mov dword [esp + 0x2c], esi
mov esi, eax
mov edx, ecx
xor ebx, eax
mov eax, dword [esp + 0x38]
rol esi, 0x1e
rol edx, 5
add ebx, dword [esp]
mov dword [esp + 4], esi
xor esi, edi
xor esi, ecx
rol ecx, 0x1e
add esi, ebp
xor dword [esp + 0x14], eax
xor eax, dword [esp + 0x10]
lea edx, [edx + ebx + 0x6ed9eba1]
mov ebx, edx
rol ebx, 0x1e
xor eax, dword [esp + 0x40]
mov ebp, ebx
xor ebp, ecx
xor eax, dword [esp + 0x2c]
rol eax, 1
mov dword [esp + 0x38], eax
add eax, ecx
mov dword [esp], eax
mov eax, dword [esp + 4]
xor ecx, eax
xor ecx, edx
rol edx, 5
lea esi, [edx + esi + 0x6ed9eba1]
mov edx, dword [esp + 0x14]
xor ebp, esi
xor edx, dword [esp + 0x20]
xor edx, dword [esp + 0x18]
rol edx, 1
add edi, edx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x1c]
add edi, ecx
mov ecx, esi
rol esi, 0x1e
rol ecx, 5
lea ecx, [ecx + edi + 0x6ed9eba1]
xor edx, dword [esp + 0x44]
xor edx, dword [esp + 0x28]
xor edx, dword [esp + 0xc]
rol edx, 1
add eax, edx
mov dword [esp + 0x1c], edx
mov edx, ecx
add eax, ebp
rol edx, 5
lea edi, [edx + eax + 0x6ed9eba1]
mov eax, dword [esp + 0x44]
mov edx, edi
rol edx, 5
xor eax, dword [esp + 0x24]
xor eax, dword [esp + 0x48]
xor eax, dword [esp + 0x14]
rol eax, 1
mov dword [esp + 0x44], eax
add eax, ebx
xor ebx, esi
xor ebx, ecx
rol ecx, 0x1e
add ebx, dword [esp]
lea ebx, [edx + ebx + 0x6ed9eba1]
mov edx, ecx
xor edx, esi
xor edx, edi
rol edi, 0x1e
add edx, eax
mov eax, ebx
mov ebp, edi
rol eax, 5
and ebp, ecx
lea edx, [eax + edx + 0x6ed9eba1]
mov eax, edi
xor eax, ecx
and eax, ebx
rol ebx, 0x1e
xor ebp, eax
mov eax, dword [esp + 0x10]
xor eax, dword [esp + 0x34]
xor eax, dword [esp + 8]
xor eax, dword [esp + 0x1c]
rol eax, 1
add esi, eax
mov dword [esp + 0x10], eax
mov eax, edx
add esi, ebp
rol eax, 5
lea eax, [eax + esi - 0x70e44324]
mov esi, dword [esp + 0x34]
xor esi, dword [esp + 0x20]
xor esi, dword [esp + 0xc]
xor esi, dword [esp + 0x44]
rol esi, 1
mov ebp, esi
mov dword [esp + 0x34], esi
mov esi, ebx
xor esi, edi
add ebp, edi
and edi, ebx
and esi, edx
mov dword [esp], ebp
mov ebp, dword [esp + 0x30]
rol edx, 0x1e
xor edi, esi
mov esi, dword [esp + 0x24]
mov dword [esp + 4], edx
xor esi, ebp
xor ebp, dword [esp + 0x28]
xor esi, dword [esp + 0x18]
xor ebp, dword [esp + 0x2c]
xor esi, dword [esp + 0x38]
xor ebp, dword [esp + 0x10]
rol esi, 1
add ecx, esi
mov dword [esp + 0x24], esi
mov esi, eax
add ecx, edi
mov edi, edx
rol esi, 5
xor edi, ebx
rol ebp, 1
lea esi, [esi + ecx - 0x70e44324]
and edi, eax
lea ecx, [ebp + ebx]
and ebx, edx
rol eax, 0x1e
mov dword [esp + 0x30], ebp
xor ebx, edi
mov edi, esi
mov ebp, eax
mov dword [esp + 0x4c], eax
add ebx, dword [esp]
rol edi, 5
and ebp, edx
lea edi, [edi + ebx - 0x70e44324]
mov ebx, eax
xor ebx, edx
mov edx, dword [esp + 0x40]
and ebx, esi
rol esi, 0x1e
xor ebp, ebx
mov ebx, esi
add ebp, ecx
mov ecx, edi
xor ebx, eax
rol ecx, 5
and ebx, edi
rol edi, 0x1e
lea ecx, [ecx + ebp - 0x70e44324]
mov ebp, esi
and ebp, eax
mov dword [esp], ecx
mov ecx, dword [esp + 4]
xor ebp, ebx
mov ebx, dword [esp + 0x20]
mov eax, dword [esp]
xor ebx, edx
xor edx, dword [esp + 8]
xor ebx, dword [esp + 0x14]
xor edx, dword [esp + 0x38]
xor ebx, dword [esp + 0x24]
xor edx, dword [esp + 0x30]
rol ebx, 1
add ecx, ebx
mov dword [esp + 0x20], ebx
mov ebx, eax
add ecx, ebp
mov ebp, edi
rol ebx, 5
xor ebp, esi
rol edx, 1
lea ecx, [ebx + ecx - 0x70e44324]
and ebp, eax
lea ebx, [edx + esi]
and esi, edi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x40], edx
xor esi, ebp
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 4]
xor ebp, ecx
xor ecx, dword [esp + 0x18]
xor ebp, dword [esp + 0x1c]
xor ecx, dword [esp + 0x44]
xor ebp, dword [esp + 0x34]
xor ecx, dword [esp + 0x20]
rol ebp, 1
add eax, ebp
mov dword [esp + 0x28], ebp
add eax, esi
mov esi, edx
rol esi, 5
rol ecx, 1
lea eax, [esi + eax - 0x70e44324]
mov esi, ecx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp]
add esi, edi
mov dword [esp], esi
rol ecx, 0x1e
mov ebp, ecx
xor ebp, edi
and edi, ecx
and ebp, edx
rol edx, 0x1e
xor edi, ebp
mov ebp, edx
mov dword [esp + 4], edx
add edi, ebx
mov ebx, eax
and ebp, ecx
rol ebx, 5
lea edi, [ebx + edi - 0x70e44324]
mov ebx, edx
xor ebx, ecx
mov esi, edi
and ebx, eax
rol eax, 0x1e
rol esi, 5
xor ebp, ebx
mov ebx, eax
add ebp, dword [esp]
xor ebx, edx
and ebx, edi
rol edi, 0x1e
lea esi, [esi + ebp - 0x70e44324]
mov ebp, eax
and ebp, edx
mov dword [esp], esi
mov esi, dword [esp + 0xc]
xor ebp, ebx
mov ebx, dword [esp + 8]
mov edx, dword [esp]
xor ebx, esi
xor ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x28]
rol ebx, 1
add ecx, ebx
mov dword [esp + 8], ebx
mov ebx, edx
add ecx, ebp
rol ebx, 5
mov ebp, edi
lea ecx, [ebx + ecx - 0x70e44324]
mov ebx, esi
xor ebp, eax
mov esi, dword [esp + 4]
xor ebx, dword [esp + 0x14]
and ebp, edx
xor ebx, dword [esp + 0x34]
xor ebx, dword [esp + 0x48]
rol ebx, 1
lea edx, [ebx + eax]
and eax, edi
mov dword [esp + 0xc], ebx
mov ebx, ecx
mov dword [esp + 0x4c], edx
xor eax, ebp
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
xor ebp, edx
xor edx, dword [esp + 0x1c]
xor ebp, dword [esp + 0x24]
xor edx, dword [esp + 0x30]
xor ebp, dword [esp + 0x40]
xor edx, dword [esp + 8]
rol ebp, 1
add esi, ebp
mov dword [esp + 0x18], ebp
add esi, eax
mov eax, ecx
rol eax, 5
rol edx, 1
lea ecx, [eax + esi - 0x70e44324]
mov esi, dword [esp]
mov dword [esp + 0x2c], edx
add edx, edi
mov eax, ebx
rol eax, 0x1e
mov dword [esp + 4], eax
rol esi, 0x1e
mov ebp, esi
mov dword [esp], esi
xor ebp, edi
and edi, esi
and ebp, ebx
mov ebx, ecx
xor edi, ebp
rol ebx, 5
mov ebp, eax
add edi, dword [esp + 0x4c]
and ebp, esi
lea ebx, [ebx + edi - 0x70e44324]
mov edi, eax
xor edi, esi
mov esi, dword [esp + 0x38]
and edi, ecx
rol ecx, 0x1e
xor ebp, edi
add ebp, edx
mov edx, ebx
rol edx, 5
lea edi, [edx + ebp - 0x70e44324]
mov edx, ecx
mov ebp, ecx
xor edx, eax
and ebp, eax
mov eax, dword [esp]
and edx, ebx
rol ebx, 0x1e
xor ebp, edx
mov edx, dword [esp + 0x14]
xor edx, esi
xor esi, dword [esp + 0x10]
xor edx, dword [esp + 0x20]
xor esi, dword [esp + 0x40]
xor edx, dword [esp + 0x18]
xor esi, dword [esp + 0x2c]
rol edx, 1
add eax, edx
mov dword [esp + 0x14], edx
mov edx, edi
add eax, ebp
rol edx, 5
mov ebp, edi
rol esi, 1
lea edi, [edx + eax - 0x70e44324]
mov edx, esi
mov dword [esp + 0x38], esi
mov esi, ebx
xor esi, ecx
lea eax, [edx + ecx]
and ecx, ebx
mov edx, dword [esp + 0x44]
and esi, ebp
mov dword [esp], eax
mov eax, dword [esp + 4]
xor ecx, esi
mov esi, dword [esp + 0x1c]
xor esi, edx
xor esi, dword [esp + 0x28]
xor esi, dword [esp + 0xc]
rol esi, 1
add eax, esi
mov dword [esp + 0x1c], esi
add eax, ecx
mov ecx, eax
mov eax, edi
rol eax, 5
lea esi, [eax + ecx - 0x70e44324]
mov eax, edx
xor eax, dword [esp + 0x24]
xor eax, dword [esp + 0x48]
xor eax, dword [esp + 0x14]
rol eax, 1
mov edx, eax
mov dword [esp + 0x44], eax
mov eax, ebp
rol eax, 0x1e
mov ecx, eax
mov ebp, eax
lea eax, [edx + ebx]
xor ecx, ebx
and ebx, ebp
mov edx, ebp
and ecx, edi
rol edi, 0x1e
xor ebx, ecx
mov ecx, esi
mov dword [esp + 4], edi
add ebx, dword [esp]
rol ecx, 5
lea ebx, [ecx + ebx - 0x70e44324]
mov ecx, edi
xor ecx, ebp
mov ebp, edi
and ecx, esi
and ebp, edx
rol esi, 0x1e
xor ebp, ecx
mov ecx, esi
add ebp, eax
mov eax, ebx
xor ecx, edi
rol eax, 5
and ecx, ebx
rol ebx, 0x1e
lea eax, [eax + ebp - 0x70e44324]
mov ebp, esi
and ebp, edi
mov edi, dword [esp + 0x34]
mov dword [esp], eax
xor ebp, ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [esp]
xor ecx, edi
xor edi, dword [esp + 0x20]
xor ecx, dword [esp + 8]
xor edi, dword [esp + 0xc]
xor ecx, dword [esp + 0x1c]
xor edi, dword [esp + 0x44]
rol ecx, 1
add edx, ecx
mov dword [esp + 0x10], ecx
mov ecx, eax
add edx, ebp
mov ebp, ebx
rol ecx, 5
xor ebp, esi
rol edi, 1
lea ecx, [ecx + edx - 0x70e44324]
mov edx, dword [esp + 0x30]
and ebp, eax
lea eax, [edi + esi]
and esi, ebx
mov dword [esp + 0x34], edi
xor esi, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 4]
xor ebp, edx
xor ebp, dword [esp + 0x18]
xor ebp, dword [esp + 0x38]
rol ebp, 1
add eax, ebp
mov dword [esp + 0x24], ebp
mov ebp, dword [esp]
add eax, esi
mov esi, ecx
rol esi, 5
lea esi, [esi + eax - 0x70e44324]
mov eax, edx
xor eax, dword [esp + 0x28]
rol ebp, 0x1e
mov edx, ebp
mov dword [esp], ebp
xor edx, ebx
and edx, ecx
rol ecx, 0x1e
xor eax, dword [esp + 0x2c]
xor eax, dword [esp + 0x10]
rol eax, 1
lea edi, [eax + ebx]
and ebx, ebp
mov dword [esp + 0x30], eax
xor ebx, edx
mov edx, esi
mov dword [esp + 4], edi
mov edi, ecx
add ebx, dword [esp + 0x4c]
rol edx, 5
xor edi, ebp
and edi, esi
rol esi, 0x1e
lea edx, [edx + ebx - 0x70e44324]
mov ebx, ecx
and ebx, ebp
xor ebx, edi
mov edi, dword [esp + 0x40]
add ebx, dword [esp + 4]
xor dword [esp + 0x20], edi
xor edi, dword [esp + 8]
xor edi, dword [esp + 0x38]
xor edi, eax
rol edi, 1
mov eax, edi
mov dword [esp + 0x40], edi
mov edi, edx
add eax, esi
rol edi, 0x1e
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov ebp, edi
xor ebp, esi
xor esi, ecx
xor esi, edx
rol edx, 5
lea edx, [edx + ebx - 0x70e44324]
mov ebx, dword [esp]
xor eax, dword [esp + 0x14]
xor ebp, edx
xor eax, dword [esp + 0x24]
rol eax, 1
add ebx, eax
mov dword [esp + 0x20], eax
add ebx, esi
mov esi, edx
rol edx, 0x1e
rol esi, 5
lea eax, [esi + ebx - 0x359d3e2a]
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x48]
xor esi, ebx
xor esi, dword [esp + 0x1c]
xor esi, dword [esp + 0x34]
rol esi, 1
add ecx, esi
mov dword [esp + 0x28], esi
mov esi, eax
add ecx, ebp
rol esi, 5
lea ecx, [esi + ecx - 0x359d3e2a]
mov esi, ebx
mov ebx, eax
xor esi, dword [esp + 0x18]
rol ebx, 0x1e
mov dword [esp], ebx
xor ebx, edx
xor ebx, ecx
xor esi, dword [esp + 0x44]
xor esi, dword [esp + 0x20]
rol esi, 1
lea ebp, [esi + edi]
xor edi, edx
mov dword [esp + 0x48], esi
mov esi, ecx
rol ecx, 0x1e
xor edi, eax
rol esi, 5
add ebx, ebp
add edi, dword [esp + 4]
lea esi, [esi + edi - 0x359d3e2a]
mov edi, dword [esp + 0xc]
xor dword [esp + 8], edi
xor edi, dword [esp + 0x14]
xor edi, dword [esp + 0x34]
xor edi, dword [esp + 0x48]
rol edi, 1
mov dword [esp + 0xc], edi
mov edi, esi
mov eax, dword [esp + 0xc]
rol edi, 0x1e
mov ebp, edi
xor ebp, ecx
add eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp]
xor ecx, eax
xor ecx, esi
rol esi, 5
lea esi, [esi + ebx - 0x359d3e2a]
mov ebx, dword [esp + 8]
xor ebp, esi
xor ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x28]
rol ebx, 1
add edx, ebx
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x2c]
add edx, ecx
mov ecx, esi
rol esi, 0x1e
rol ecx, 5
lea edx, [ecx + edx - 0x359d3e2a]
mov ecx, dword [esp + 0x18]
xor ecx, ebx
xor ebx, dword [esp + 0x1c]
xor ecx, dword [esp + 0x24]
xor ebx, dword [esp + 0x30]
xor ecx, dword [esp + 0x40]
xor ebx, dword [esp + 8]
rol ecx, 1
add eax, ecx
mov dword [esp + 0x18], ecx
mov ecx, edx
add eax, ebp
rol ecx, 5
rol ebx, 1
lea eax, [ecx + eax - 0x359d3e2a]
lea ecx, [ebx + edi]
xor edi, esi
mov ebp, ebx
mov dword [esp + 0x2c], ebx
mov ebx, eax
xor edi, edx
rol ebx, 5
add edi, dword [esp + 4]
lea edi, [ebx + edi - 0x359d3e2a]
mov ebx, edx
mov edx, dword [esp + 0x38]
rol ebx, 0x1e
mov dword [esp + 0x4c], ebx
xor ebx, esi
xor ebx, eax
rol eax, 0x1e
xor dword [esp + 0x14], edx
xor edx, dword [esp + 0x10]
add ebx, ecx
xor edx, dword [esp + 0x40]
xor edx, ebp
mov ebp, edi
rol edi, 0x1e
rol edx, 1
mov ecx, edi
mov dword [esp + 0x38], edx
add edx, eax
xor ecx, eax
mov dword [esp + 4], edx
mov edx, dword [esp + 0x4c]
xor eax, edx
xor eax, ebp
rol ebp, 5
lea ebp, [ebp + ebx - 0x359d3e2a]
mov ebx, dword [esp + 0x14]
mov dword [esp], ebp
xor ebx, dword [esp + 0x20]
xor ebx, dword [esp + 0x18]
rol ebx, 1
add esi, ebx
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x44]
add esi, eax
mov eax, ebp
rol eax, 5
lea ebp, [eax + esi - 0x359d3e2a]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp]
xor eax, ebx
xor ecx, esi
xor eax, dword [esp + 0x28]
xor eax, dword [esp + 0xc]
rol eax, 1
add edx, eax
mov dword [esp + 0x1c], eax
mov eax, ebp
add edx, ecx
rol eax, 5
lea ecx, [eax + edx - 0x359d3e2a]
mov eax, ebx
xor eax, dword [esp + 0x24]
xor eax, dword [esp + 0x48]
xor eax, dword [esp + 0x14]
rol eax, 1
mov edx, eax
mov eax, esi
rol eax, 0x1e
lea esi, [edx + edi]
mov ebx, edx
mov dword [esp + 0x44], edx
mov edx, ecx
xor edi, eax
rol edx, 5
mov dword [esp], eax
xor edi, ebp
rol ebp, 0x1e
add edi, dword [esp + 4]
lea edx, [edx + edi - 0x359d3e2a]
mov edi, ebp
xor edi, eax
mov eax, dword [esp + 0x34]
xor edi, ecx
rol ecx, 0x1e
add edi, esi
xor dword [esp + 0x10], eax
xor eax, dword [esp + 0x20]
xor eax, dword [esp + 0xc]
xor eax, ebx
mov ebx, edx
rol ebx, 0x1e
rol eax, 1
mov esi, ebx
mov dword [esp + 0x34], eax
add eax, ecx
xor esi, ecx
xor ecx, ebp
mov dword [esp + 4], eax
xor ecx, edx
rol edx, 5
lea eax, [edx + edi - 0x359d3e2a]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
xor edi, dword [esp + 8]
xor eax, edx
xor edx, dword [esp + 0x28]
xor eax, dword [esp + 0x18]
xor edi, dword [esp + 0x1c]
xor edx, dword [esp + 0x2c]
xor eax, dword [esp + 0x38]
rol edi, 1
xor edx, edi
add edi, dword [esp]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0xc]
rol eax, 1
mov dword [esp + 0x24], eax
add ebp, eax
add edi, ecx
mov ecx, edx
xor esi, edx
rol ecx, 5
add ebp, esi
lea edi, [ecx + edi - 0x359d3e2a]
mov ecx, edx
mov edx, dword [esp + 0x30]
mov eax, edi
rol ecx, 0x1e
mov esi, edi
rol eax, 5
rol esi, 0x1e
mov dword [esp + 0xc], ecx
lea ebp, [eax + ebp - 0x359d3e2a]
mov dword [esp + 0x30], esi
rol edx, 1
mov dword [esp + 0x2c], ebp
lea eax, [edx + ebx]
xor ebx, ecx
xor ebx, edi
mov dword [esp], eax
mov eax, ecx
mov ecx, ebp
add ebx, dword [esp + 4]
xor esi, eax
rol ecx, 5
xor esi, ebp
mov ebp, dword [esp + 0x18]
add esi, dword [esp]
lea ecx, [ecx + ebx - 0x359d3e2a]
mov ebx, dword [esp + 0x40]
mov eax, ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x48]
rol eax, 5
lea edi, [eax + esi - 0x359d3e2a]
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 8]
xor ebp, ecx
xor esi, ebx
xor eax, ebx
mov ebx, dword [esp + 0x28]
xor esi, dword [esp + 0x14]
xor eax, dword [esp + 0x38]
xor ebx, ecx
mov ecx, eax
mov eax, ebp
xor esi, dword [esp + 0x24]
xor ebx, dword [esp + 0x1c]
xor eax, dword [esp + 0x44]
xor ecx, edx
mov ebp, ecx
mov ecx, dword [esp + 0x30]
rol ebp, 1
rol esi, 1
xor ebx, dword [esp + 0x34]
xor eax, esi
add esi, dword [esp + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
rol ebx, 1
add ebx, ecx
rol eax, 0x1e
mov edx, eax
add ebp, eax
xor edx, ecx
mov ecx, dword [esp + 0x10]
xor edx, dword [esp + 0x10]
rol ecx, 0x1e
add esi, edx
mov edx, edi
xor eax, ecx
rol edx, 5
xor eax, edi
rol edi, 0x1e
lea esi, [edx + esi - 0x359d3e2a]
add ebx, eax
mov edx, esi
rol edx, 5
lea edx, [edx + ebx - 0x359d3e2a]
mov ebx, edi
xor ebx, ecx
xor ebx, esi
rol esi, 0x1e
add ebx, ebp
mov ebp, edx
rol ebp, 5
lea eax, [ebx + ebp]
lea ebx, [ebp + ebx - 0x359d3e2a]
mov ebp, dword [esp + 0x18]
rol ebx, 5
rol ebp, 1
add ebp, dword [esp + 0x50]
add ebp, ecx
mov ecx, esi
add esi, dword [esp + 0x64]
xor ecx, edi
add edi, dword [esp + 0x58]
xor ecx, edx
rol edx, 0x1e
add ebp, ecx
add edx, dword [esp + 0x54]
lea ecx, [ebx + ebp - 0x359d3e2a]
mov ebx, esi
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x58], edi
mov dword [esp + 0x54], edx
lea ecx, [ecx + eax - 0x359d3e2a]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x5c]
add ecx, 0x40
cmp ecx, dword [esp + 0x60]
jne 0x40c370
jmp 0x40d3bb
mov edx, dword [esp + 0x54]
mov esi, ebx
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x50]
mov dword [ecx], ebx
mov dword [ecx + 4], ebp
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], esi
mov dword [ecx + 0x10], edi
add esp, 0x68
pop esi
pop edi
pop ebx
pop ebp
ret