Function at 0x44c000
Capabilities:
Encode data using xor
Encrypt data using speck

Disassembly:
push ebp
push edi
push esi
mov esi, edx
push ebx
mov ebx, eax
sub esp, 0x6c
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
movzx eax, byte [eax + 0x9d56c0]
movzx edx, byte [edx + 0x9d56c0]
mov ecx, edx
or ecx, eax
and ecx, 0x80
je 0x44c110
mov esi, dword [ebx + 0x2f30]
test esi, esi
jne 0x44c0ec
mov edx, dword [ebx + 0x2f24]
mov eax, dword [ebx + 0x2f28]
add edx, 2
add eax, 2
cmp edx, 3
mov dword [ebx + 0x2f28], eax
mov dword [ebx + 0x2f24], edx
jle 0x44c0ec
cmp eax, 4
jle 0x44c0d8
cmp eax, dword [ebx + 0x2f2c]
jg 0x44c340
mov edx, dword [ebx + 0x2f20]
mov dword [ebx + 0x2f2c], eax
mov eax, dword [ebx + 0x2f1c]
add eax, edx
lea edx, [eax + 4]
cmp edx, 8
mov dword [ebx + 0x2f1c], eax
jbe 0x44c0b8
mov dword [ebx + 0x2f1c], 0
xor eax, eax
mov dword [ebx + 0x2f20], 0xffffffff
mov dword [ebx + 0x2f2c], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.vbi:_pll_adj_2d_n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
call fcn.0042b9b0
mov dword [ebx + 0x2f24], 0
mov dword [ebx + 0x2f28], 0
mov dword [esp + 8], str.vbi_decode_line:_HammErr_n
mov dword [esp + 4], 6
mov dword [esp], 0x2e
call fcn.0042b9b0
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, eax
and ecx, 7
mov dword [esp + 0x3c], ecx
mov ecx, eax
sar ecx, 3
lea ebp, [edx + edx]
or ebp, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.vbi_decode_line:_x__x__mag:_x__pkt:_d__n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
call fcn.0042b9b0
test ebp, ebp
je 0x44c353
mov eax, dword [esp + 0x38]
sub eax, 1
cmp eax, 0x17
jbe 0x44c1b5
cmp dword [esp + 0x38], 0x1b
je 0x44ca55
cmp dword [esp + 0x38], 0x1c
je 0x44cb53
cmp dword [esp + 0x38], 0x1e
je 0x44c7a2
mov ebp, dword [esp + 0x38]
mov dword [esp + 8], str.unsupported_packet:_d_n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
mov dword [esp + 0xc], ebp
call fcn.0042b9b0
jmp 0x44c108
mov eax, dword [esp + 0x3c]
lea ebp, [eax*8]
mov eax, dword [ebx + 0x1c]
add eax, ebp
mov edx, dword [eax]
test edx, edx
je 0x44c108
mov edx, dword [esp + 0x38]
xor ecx, ecx
mov dword [esp + 0x2c], ebp
mov dword [eax + 4], edx
lea eax, [edx + edx*4]
shl eax, 3
mov dword [esp + 0x34], eax
xor eax, eax
movzx edx, byte [esi + eax + 2]
movzx edx, byte [edx + 0xbd8d20]
mov byte [esi + eax + 2], dl
mov ebp, dword [esp + 0x2c]
mov edi, dword [ebx + 0x1c]
mov edi, dword [edi + ebp]
mov ebp, dword [esp + 0x34]
add edi, eax
mov byte [ebp + edi + 0xc], dl
cmp byte [esi + eax + 2], 0x80
sbb ecx, 0xffffffff
add eax, 1
cmp eax, 0x28
jne 0x44c1e8
mov eax, dword [ebx + 0x2f30]
mov ebp, dword [esp + 0x2c]
test eax, eax
jne 0x44c2e0
cmp ecx, 2
jg 0x44c666
mov eax, dword [ebx + 0x2f24]
add ecx, dword [ebx + 0x2f28]
add eax, 1
cmp eax, 3
mov dword [ebx + 0x2f28], ecx
mov dword [ebx + 0x2f24], eax
jle 0x44c2e0
cmp ecx, 4
jle 0x44c2cc
cmp ecx, dword [ebx + 0x2f2c]
jg 0x44cced
mov eax, dword [ebx + 0x2f20]
add eax, dword [ebx + 0x2f1c]
mov dword [ebx + 0x2f2c], ecx
lea edx, [eax + 4]
cmp edx, 8
mov dword [ebx + 0x2f1c], eax
jbe 0x44c2ac
mov dword [ebx + 0x2f1c], 0
xor eax, eax
mov dword [ebx + 0x2f20], 0xffffffff
mov dword [ebx + 0x2f2c], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.vbi:_pll_adj_2d_n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
call fcn.0042b9b0
mov dword [ebx + 0x2f24], 0
mov dword [ebx + 0x2f28], 0
add ebp, dword [ebx + 0x1c]
mov eax, dword [ebp]
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 4]
mov dword [esp + 8], str.store_in_cache__d_:_pagenum:_x_n
mov dword [esp + 4], 7
mov dword [esp], 0x2e
mov dword [esp + 0xc], eax
call fcn.0042b9b0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x1c]
mov edx, dword [eax + ecx*8]
mov ecx, dword [esp + 0x38]
mov eax, ebx
call fcn.0044bca0
mov eax, dword [ebx + 0x1c]
mov esi, dword [esp + 0x3c]
mov eax, dword [eax + esi*8]
mov eax, dword [eax]
mov dword [ebx + 0xc], eax
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebx + 0x2f20]
neg edx
mov dword [ebx + 0x2f20], edx
jmp 0x44c07c
movzx edx, byte [esi + 2]
lea eax, [esi + 2]
movzx edx, byte [edx + 0x9d56c0]
mov dword [esp + 0x40], edx
and edx, 0x80
jne 0x44c670
movzx edx, byte [eax + 1]
movzx edx, byte [edx + 0x9d56c0]
mov dword [esp + 0x44], edx
and edx, 0x80
jne 0x44c670
movzx edx, byte [eax + 2]
movzx edx, byte [edx + 0x9d56c0]
mov dword [esp + 0x48], edx
and edx, 0x80
jne 0x44c670
movzx edx, byte [eax + 3]
movzx edx, byte [edx + 0x9d56c0]
mov dword [esp + 0x4c], edx
and edx, 0x80
jne 0x44c670
movzx edx, byte [eax + 4]
movzx edx, byte [edx + 0x9d56c0]
mov dword [esp + 0x50], edx
and edx, 0x80
jne 0x44c670
movzx edx, byte [eax + 5]
movzx edx, byte [edx + 0x9d56c0]
mov dword [esp + 0x54], edx
and edx, 0x80
jne 0x44c670
movzx edx, byte [eax + 6]
movzx edx, byte [edx + 0x9d56c0]
mov dword [esp + 0x58], edx
and edx, 0x80
jne 0x44c670
movzx eax, byte [eax + 7]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
mov dword [esp + 0x5c], eax
jne 0x44c670
mov eax, dword [esp + 0x3c]
mov edi, dword [ebx + 0x1c]
lea ebp, [eax*8]
add edi, ebp
mov edx, dword [edi]
test edx, edx
je 0x44d010
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x44ca3c
mov edx, dword [edi]
mov byte [edx + 8], al
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x38], edx
mov eax, dword [ebx + 0x1c]
mov edx, dword [esp + 0x3c]
mov eax, dword [eax + edx*8]
mov edx, dword [ebx + 0x24]
mov byte [eax + 9], dl
mov eax, dword [ebx + 0x1c]
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x4c]
mov edx, dword [eax + ecx*8]
mov ecx, dword [esp + 0x50]
mov eax, edi
shl eax, 4
shl ecx, 8
or eax, ecx
mov ecx, dword [esp + 0x54]
or eax, dword [esp + 0x48]
shl ecx, 0xc
or eax, ecx
mov ecx, dword [esp + 0x3c]
and eax, 0x3f7f
mov dword [edx + 4], eax
mov eax, dword [esp + 0x44]
shl ecx, 8
shl eax, 4
or eax, dword [esp + 0x40]
or eax, ecx
mov ecx, edi
mov dword [edx], eax
mov eax, dword [esp + 0x54]
and ecx, 8
shl ecx, 3
and eax, 0xc
shl eax, 2
or eax, ecx
mov ecx, dword [esp + 0x38]
or al, byte [esp + 0x58]
shl ecx, 7
or eax, ecx
mov byte [edx + 0xb], al
mov eax, dword [ebx + 0x1c]
mov ecx, dword [esp + 0x3c]
mov edx, dword [eax + ecx*8]
xor eax, eax
mov ecx, 0xfa
add edx, 0xc
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, ebp
mov edi, 8
mov eax, dword [ebx + 0x1c]
add eax, ebp
mov ebp, esi
mov dword [eax + 4], 0
mov eax, dword [eax]
mov byte [eax + 0xc], 0x20
mov edx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + edx*8]
mov byte [eax + 0xd], 0x20
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + edx*8]
mov byte [eax + 0xe], 0x20
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + edx*8]
mov byte [eax + 0xf], 0x20
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + edx*8]
mov byte [eax + 0x10], 0x20
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + edx*8]
mov byte [eax + 0x11], 0x20
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + edx*8]
mov byte [eax + 0x12], 0x20
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + edx*8]
mov byte [eax + 0x13], 0x20
xor eax, eax
mov esi, eax
jmp 0x44c5ea
mov edx, dword [ebx + 0x2f20]
mov dword [ebx + 0x2f2c], eax
mov eax, dword [ebx + 0x2f1c]
add eax, edx
lea edx, [eax + 4]
cmp edx, 8
mov dword [ebx + 0x2f1c], eax
jbe 0x44c5a2
mov dword [ebx + 0x2f1c], 0
xor eax, eax
mov dword [ebx + 0x2f20], 0xffffffff
mov dword [ebx + 0x2f2c], 0
mov dword [esp + 0x30], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.vbi:_pll_adj_2d_n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
call fcn.0042b9b0
mov ecx, dword [esp + 0x30]
mov dword [ebx + 0x2f24], 0
mov dword [ebx + 0x2f28], 0
add edi, 1
cmp edi, 0x28
je 0x44c760
movzx eax, byte [ebp + edi + 2]
movzx eax, byte [eax + 0xbd8d20]
mov byte [ebp + edi + 2], al
mov edx, dword [ebx + 0x1c]
mov edx, dword [edx + ecx]
mov byte [edx + edi + 0xc], al
mov eax, dword [ebx + 0x2f30]
cmp byte [ebp + edi + 2], 0x80
sbb esi, 0xffffffff
test eax, eax
jne 0x44c5de
cmp esi, 2
mov eax, esi
jle 0x44c622
mov eax, 2
mov edx, dword [ebx + 0x2f24]
add eax, dword [ebx + 0x2f28]
add edx, 1
cmp edx, 3
mov dword [ebx + 0x2f28], eax
mov dword [ebx + 0x2f24], edx
jle 0x44c5de
cmp eax, 4
jle 0x44c5ca
cmp eax, dword [ebx + 0x2f2c]
jle 0x44c560
mov edx, dword [ebx + 0x2f20]
neg edx
mov dword [ebx + 0x2f20], edx
jmp 0x44c566
mov ecx, 2
jmp 0x44c237
mov ecx, dword [ebx + 0x2f30]
test ecx, ecx
jne 0x44c730
mov edx, dword [ebx + 0x2f24]
mov eax, dword [ebx + 0x2f28]
add edx, 2
add eax, 2
cmp edx, 3
mov dword [ebx + 0x2f28], eax
mov dword [ebx + 0x2f24], edx
jle 0x44c730
cmp eax, 4
jle 0x44c71c
cmp eax, dword [ebx + 0x2f2c]
jle 0x44c6b8
neg dword [ebx + 0x2f20]
mov dword [ebx + 0x2f2c], eax
mov eax, dword [ebx + 0x2f20]
add eax, dword [ebx + 0x2f1c]
mov dword [ebx + 0x2f1c], eax
add eax, 4
cmp eax, 8
jbe 0x44c6f6
mov dword [ebx + 0x2f1c], 0
mov dword [ebx + 0x2f20], 0xffffffff
mov dword [ebx + 0x2f2c], 0
mov eax, dword [ebx + 0x2f1c]
mov dword [esp + 8], str.vbi:_pll_adj_2d_n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
mov dword [esp + 0xc], eax
call fcn.0042b9b0
mov dword [ebx + 0x2f24], 0
mov dword [ebx + 0x2f28], 0
mov ebp, dword [esp + 0x3c]
mov eax, dword [ebx + 0x1c]
lea esi, [ebp*8]
mov eax, dword [eax + ebp*8]
mov dword [esp], eax
call fcn.008f2ba8
mov eax, dword [ebx + 0x1c]
add eax, esi
mov dword [eax], 0
mov dword [eax + 4], 0
jmp 0x44c108
mov ebp, dword [ebx + 0x1c]
add ebp, ecx
mov eax, dword [ebp]
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 4]
mov dword [esp + 8], str.store_in_cache__d_:_pagenum:_x_n
mov dword [esp + 4], 7
mov dword [esp], 0x2e
mov dword [esp + 0xc], eax
call fcn.0042b9b0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x1c]
mov edx, dword [eax + ecx*8]
xor ecx, ecx
jmp 0x44c31d
movzx eax, byte [esi + 2]
lea ebp, [esi + 2]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
jne 0x44ca8e
and eax, 0xf
mov dword [esp + 0x40], eax
movzx eax, byte [ebp + 1]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
jne 0x44ca8e
and eax, 0xf
mov dword [esp + 0x44], eax
movzx eax, byte [ebp + 2]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
jne 0x44ca8e
and eax, 0xf
mov dword [esp + 0x48], eax
movzx eax, byte [ebp + 3]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
jne 0x44ca8e
and eax, 0xf
mov dword [esp + 0x4c], eax
movzx eax, byte [ebp + 4]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
jne 0x44ca8e
and eax, 0xf
mov dword [esp + 0x50], eax
movzx eax, byte [ebp + 5]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
jne 0x44ca8e
and eax, 0xf
mov dword [esp + 0x54], eax
movzx eax, byte [ebp + 6]
movzx eax, byte [eax + 0x9d56c0]
test al, 0x80
jne 0x44ca8e
and eax, 0xf
xor edi, edi
lea edx, [esi + 0x14]
mov dword [esp + 0x34], ebp
mov ebp, edx
mov dword [esp + 0x58], eax
jmp 0x44c8e5
mov edx, dword [ebx + 0x2f20]
mov dword [ebx + 0x2f2c], eax
mov eax, dword [ebx + 0x2f1c]
add eax, edx
lea edx, [eax + 4]
cmp edx, 8
mov dword [ebx + 0x2f1c], eax
jbe 0x44c8aa
mov dword [ebx + 0x2f1c], 0
xor eax, eax
mov dword [ebx + 0x2f20], 0xffffffff
mov dword [ebx + 0x2f2c], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.vbi:_pll_adj_2d_n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
call fcn.0042b9b0
mov dword [ebx + 0x2f24], 0
mov dword [ebx + 0x2f28], 0
add esi, 1
cmp esi, ebp
je 0x44c952
movzx eax, byte [esi + 0x16]
movzx eax, byte [eax + 0xbd8d20]
cmp al, 0x80
mov byte [esi + 0x16], al
mov eax, dword [ebx + 0x2f30]
sbb edi, 0xffffffff
test eax, eax
jne 0x44c8de
cmp edi, 2
mov eax, edi
jle 0x44c90e
mov eax, 2
mov edx, dword [ebx + 0x2f24]
add eax, dword [ebx + 0x2f28]
add edx, 1
cmp edx, 3
mov dword [ebx + 0x2f28], eax
mov dword [ebx + 0x2f24], edx
jle 0x44c8de
cmp eax, 4
jle 0x44c8ca
cmp eax, dword [ebx + 0x2f2c]
jle 0x44c868
mov edx, dword [ebx + 0x2f20]
neg edx
mov dword [ebx + 0x2f20], edx
jmp 0x44c86e
test edi, edi
mov ebp, dword [esp + 0x34]
jne 0x44c108
test byte [esp + 0x40], 0xe
jne 0x44c108
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x58]
shl ecx, 4
or cl, byte [esp + 0x44]
shl eax, 4
shl edx, 0xc
mov byte [ebx + 0x2f44], cl
mov ecx, dword [esp + 0x54]
shl ecx, 8
or eax, ecx
or eax, dword [esp + 0x4c]
or eax, edx
mov dword [ebx + 0x2f48], eax
movzx eax, byte [ebp + 7]
movzx edx, byte [ebp + 8]
shl eax, 8
or eax, edx
mov dword [ebx + 0x2f4c], eax
movzx eax, byte [ebp + 9]
shr al, 1
and eax, 0xf
mov dword [ebx + 0x2f50], eax
test byte [ebp + 9], 0x40
je 0x44c9cd
neg eax
mov dword [ebx + 0x2f50], eax
movzx eax, byte [ebp + 0xb]
movzx edx, byte [ebp + 0xc]
shl eax, 8
or eax, edx
movzx edx, byte [ebp + 0xa]
and edx, 0xf
shl edx, 0x10
or eax, edx
sub eax, 0x11111
mov dword [ebx + 0x2f54], eax
movzx eax, byte [ebp + 0xd]
movzx edx, byte [ebp + 0xe]
shl eax, 0x10
shl edx, 8
or eax, edx
movzx edx, byte [ebp + 0xf]
add ebp, 0x14
or eax, edx
sub eax, 0x111111
mov dword [ebx + 0x2f58], eax
add ebx, 0x2f5c
mov dword [esp + 0xc], ebp
mov dword [esp + 8], 0x9d5270
mov dword [esp + 4], 0x15
mov dword [esp], ebx
call fcn.008e9fc0
jmp 0x44c108
mov ecx, dword [esp + 0x5c]
mov eax, dword [edi]
mov edx, ecx
sar edx, 1
and edx, 7
mov dword [esp + 0x38], ecx
mov byte [eax + 8], dl
jmp 0x44c45c
mov eax, dword [ebx + 0x1c]
lea ecx, [esi + 2]
mov ebp, dword [esp + 0x3c]
mov edi, dword [eax + ebp*8]
test edi, edi
je 0x44c108
mov eax, esi
lea edi, [esi + 0x26]
jmp 0x44ca7c
add eax, 1
cmp eax, edi
je 0x44cd00
movzx edx, byte [eax + 2]
movzx edx, byte [edx + 0x9d56c0]
test dl, dl
mov byte [eax + 2], dl
jns 0x44ca71
mov edx, dword [ebx + 0x2f30]
test edx, edx
jne 0x44c108
mov edx, dword [ebx + 0x2f24]
mov eax, dword [ebx + 0x2f28]
add edx, 2
add eax, 2
cmp edx, 3
mov dword [ebx + 0x2f28], eax
mov dword [ebx + 0x2f24], edx
jle 0x44c108
cmp eax, 4
jle 0x44cb3a
cmp eax, dword [ebx + 0x2f2c]
jle 0x44cad6
neg dword [ebx + 0x2f20]
mov dword [ebx + 0x2f2c], eax
mov eax, dword [ebx + 0x2f20]
add eax, dword [ebx + 0x2f1c]
mov dword [ebx + 0x2f1c], eax
add eax, 4
cmp eax, 8
jbe 0x44cb14
mov dword [ebx + 0x2f1c], 0
mov dword [ebx + 0x2f20], 0xffffffff
mov dword [ebx + 0x2f2c], 0
mov eax, dword [ebx + 0x2f1c]
mov dword [esp + 8], str.vbi:_pll_adj_2d_n
mov dword [esp + 4], 8
mov dword [esp], 0x2e
mov dword [esp + 0xc], eax
call fcn.0042b9b0
mov dword [ebx + 0x2f24], 0
mov dword [ebx + 0x2f28], 0
jmp 0x44c108
lea ebp, [esi + 2]
mov dword [esp + 0x34], ebp
movzx eax, byte [esi + 2]
cmp byte [eax + 0x9d56c0], 0
jne 0x44c108
lea eax, [esi + 3]
xor ecx, ecx
movzx edx, byte [eax + 1]
movzx eax, byte [eax + 2]
shl edx, 8
shl eax, 0x10
or edx, eax
movzx eax, byte [esi + 3]
xor esi, esi
mov dword [esp + 0x38], ebx
or edx, eax
lea esi, [esi]
mov eax, edx
sar eax, cl
lea edi, [ecx + 0x21]
and eax, 1
mov ebx, edi
add ecx, 1
imul eax, ebx
xor esi, eax
cmp ecx, 0x17
jne 0x44cb90
mov eax, edx
mov ebx, dword [esp + 0x38]
sar eax, 0xb
and eax, 0x20
xor eax, esi
mov ecx, eax
and ecx, 0x1f
jne 0x44d066
mov ebp, edx
mov eax, edx
and ebp, 0x70
and eax, 4
sar eax, 2
sar ebp, 3
or ebp, eax
mov eax, edx
and eax, 0x3f00
and edx, 0x3f0000
sar eax, 4
or ebp, eax
sar edx, 5
or ebp, edx
mov eax, dword [esp + 0x34]
xor edx, edx
xor ecx, ecx
mov esi, dword [esp + 0x34]
add eax, 4
movzx edi, byte [eax + 1]
movzx eax, byte [eax + 2]
shl edi, 8
shl eax, 0x10
or edi, eax
movzx eax, byte [esi + 4]
mov esi, ebx
or edi, eax
mov ebx, edi
sar ebx, cl
lea eax, [ecx + 0x21]
and ebx, 1
imul eax, ebx
add ecx, 1
xor edx, eax
cmp ecx, 0x17
jne 0x44cc12
mov eax, edi
mov ebx, esi
sar eax, 0xb
and eax, 0x20
xor eax, edx
mov ecx, eax
and ecx, 0x1f
jne 0x44d085
mov eax, edi
mov edx, edi
and eax, 0x70
and edx, 4
sar edx, 2
sar eax, 3
or eax, edx
mov edx, edi
and edx, 0x3f00
and edi, 0x3f0000
sar edx, 4
or eax, edx
sar edi, 5
or eax, edi
mov edx, eax
shr edx, 0x1f
test dl, dl
jne 0x44d02d
mov edx, ebp
shr edx, 0x1f
test dl, dl
jne 0x44d02d
mov ecx, ebp
shl eax, 4
sar ebp, 0xe
or eax, ebp
mov edx, eax
sar ecx, 7
and edx, 0x7f
and ecx, 0x7f
cmp edx, 0x7f
mov dword [ebx + 0x20], ecx
mov dword [ebx + 0x24], edx
je 0x44d023
mov edx, eax
mov esi, eax
and edx, 4
and esi, 1
sar edx, 2
and eax, 0x7a
shl esi, 2
or edx, esi
or edx, eax
mov dword [ebx + 0x24], edx
mov eax, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 8], str.pkt28:_language:_primary_02x_secondary0x_02x_n
mov dword [esp + 4], 7
mov dword [esp], 0x2e
call fcn.0042b9b0
jmp 0x44c108
mov eax, dword [ebx + 0x2f20]
neg eax
mov dword [ebx + 0x2f20], eax
jmp 0x44c272
cmp byte [esi + 2], 0
jne 0x44c108
test byte [ecx + 0x25], 8
je 0x44c108
mov esi, dword [esp + 0x3c]
mov edx, dword [ebx + 0x1c]
movzx edi, byte [ecx + 4]
mov eax, dword [esp + 0x3c]
mov edx, dword [edx + esi*8]
movzx esi, byte [ecx + 6]
and edi, 8
shl edi, 5
shl eax, 8
and esi, 0xc
shl esi, 7
or esi, edi
xor esi, eax
jne 0x44cd44
mov esi, 0x800
movzx edi, byte [ecx + 2]
movzx ebp, byte [ecx + 1]
shl edi, 4
and edi, 0xff
and ebp, 0xf
or edi, ebp
or edi, esi
mov dword [edx + 0x3f8], edi
movzx esi, byte [ecx + 4]
movzx edi, byte [ecx + 5]
shl esi, 4
and edi, 0xf
and esi, 0xff
shl edi, 8
or esi, edi
movzx edi, byte [ecx + 3]
and edi, 0xf
or esi, edi
movzx edi, byte [ecx + 6]
shl edi, 0xc
and edi, 0xffff
or esi, edi
and esi, 0x3f7f
mov dword [edx + 0x3fc], esi
movzx esi, byte [ecx + 0xc]
movzx edi, byte [ecx + 0xa]
and esi, 0xc
and edi, 8
shl esi, 7
shl edi, 5
or esi, edi
xor esi, eax
jne 0x44cdbe
mov esi, 0x800
movzx edi, byte [ecx + 8]
movzx ebp, byte [ecx + 7]
shl edi, 4
and edi, 0xff
and ebp, 0xf
or edi, ebp
or edi, esi
mov dword [edx + 0x400], edi
movzx esi, byte [ecx + 0xa]
movzx edi, byte [ecx + 0xb]
shl esi, 4
and edi, 0xf
and esi, 0xff
shl edi, 8
or esi, edi
movzx edi, byte [ecx + 9]
and edi, 0xf
or esi, edi
movzx edi, byte [ecx + 0xc]
shl edi, 0xc
and edi, 0xffff
or esi, edi
and esi, 0x3f7f
mov dword [edx + 0x404], esi
movzx esi, byte [ecx + 0x12]
movzx edi, byte [ecx + 0x10]
and esi, 0xc
and edi, 8
shl esi, 7
shl edi, 5
or esi, edi
xor esi, eax
jne 0x44ce38
mov esi, 0x800
movzx edi, byte [ecx + 0xe]
movzx ebp, byte [ecx + 0xd]
shl edi, 4
and edi, 0xff
and ebp, 0xf
or edi, ebp
or edi, esi
mov dword [edx + 0x408], edi
movzx esi, byte [ecx + 0x10]
movzx edi, byte [ecx + 0x11]
shl esi, 4
and edi, 0xf
and esi, 0xff
shl edi, 8
or esi, edi
movzx edi, byte [ecx + 0xf]
and edi, 0xf
or esi, edi
movzx edi, byte [ecx + 0x12]
shl edi, 0xc
and edi, 0xffff
or esi, edi
and esi, 0x3f7f
mov dword [edx + 0x40c], esi
movzx esi, byte [ecx + 0x18]
movzx edi, byte [ecx + 0x16]
and esi, 0xc
and edi, 8
shl esi, 7
shl edi, 5
or esi, edi
xor esi, eax
jne 0x44ceb2
mov esi, 0x800
movzx edi, byte [ecx + 0x14]
movzx ebp, byte [ecx + 0x13]
shl edi, 4
and edi, 0xff
and ebp, 0xf
or edi, ebp
or edi, esi
mov dword [edx + 0x410], edi
movzx esi, byte [ecx + 0x16]
movzx edi, byte [ecx + 0x17]
shl esi, 4
and edi, 0xf
and esi, 0xff
shl edi, 8
or esi, edi
movzx edi, byte [ecx + 0x15]
and edi, 0xf
or esi, edi
movzx edi, byte [ecx + 0x18]
shl edi, 0xc
and edi, 0xffff
or esi, edi
and esi, 0x3f7f
mov dword [edx + 0x414], esi
movzx esi, byte [ecx + 0x1e]
movzx edi, byte [ecx + 0x1c]
and esi, 0xc
and edi, 8
shl esi, 7
shl edi, 5
or esi, edi
xor esi, eax
jne 0x44cf2c
mov esi, 0x800
movzx edi, byte [ecx + 0x1a]
movzx ebp, byte [ecx + 0x19]
shl edi, 4
and edi, 0xff
and ebp, 0xf
or edi, ebp
or edi, esi
mov dword [edx + 0x418], edi
movzx esi, byte [ecx + 0x1c]
movzx edi, byte [ecx + 0x1d]
shl esi, 4
and edi, 0xf
and esi, 0xff
shl edi, 8
or esi, edi
movzx edi, byte [ecx + 0x1b]
and edi, 0xf
or esi, edi
movzx edi, byte [ecx + 0x1e]
shl edi, 0xc
and edi, 0xffff
or esi, edi
and esi, 0x3f7f
mov dword [edx + 0x41c], esi
movzx esi, byte [ecx + 0x24]
movzx edi, byte [ecx + 0x22]
and esi, 0xc
and edi, 8
shl esi, 7
shl edi, 5
or esi, edi
xor eax, esi
jne 0x44cfa6
mov eax, 0x800
movzx edi, byte [ecx + 0x20]
movzx ebp, byte [ecx + 0x1f]
shl edi, 4
and ebp, 0xf
and edi, 0xff
or edi, ebp
or edi, eax
mov dword [edx + 0x420], edi
movzx eax, byte [ecx + 0x22]
movzx esi, byte [ecx + 0x23]
shl eax, 4
and esi, 0xf
and eax, 0xff
shl esi, 8
or eax, esi
movzx esi, byte [ecx + 0x21]
movzx ecx, byte [ecx + 0x24]
and esi, 0xf
shl ecx, 0xc
or eax, esi
and ecx, 0xffff
or eax, ecx
or ecx, 0xffffffff
and eax, 0x3f7f
mov dword [edx + 0x424], eax
add esp, 0x6c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.0044bca0
mov dword [esp], 0x428
call sub.msvcrt.dll_malloc
mov dword [edi], eax
jmp 0x44c444
mov dword [ebx + 0x24], ecx
mov eax, ecx
jmp 0x44ccc4
cmp dword [ebx + 0x2f30], 0
jne 0x44c108
mov edx, dword [ebx + 0x2f24]
mov eax, dword [ebx + 0x2f28]
add edx, 1
add eax, 2
cmp edx, 3
mov dword [ebx + 0x2f28], eax
mov dword [ebx + 0x2f24], edx
jg 0x44cac3
jmp 0x44c108
sub eax, 0x20
or ebp, 0xffffffff
cmp al, 0x17
ja 0x44cbeb
sub ecx, 1
mov eax, 1
shl eax, cl
xor edx, eax
jmp 0x44cbc2
lea edx, [eax - 0x20]
or eax, 0xffffffff
cmp dl, 0x17
ja 0x44cc6a
sub ecx, 1
mov eax, 1
shl eax, cl
xor edi, eax
jmp 0x44cc40