Function at 0x6ad82ca0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xcc
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x7c], 0
mov esi, dword [eax + 0x40]
mov edi, dword [eax + 0x44]
lea eax, [esp + 0x7c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 4], eax
add eax, 0x30
mov dword [esp], eax
call fcn.6ada6030
mov ebp, eax
test eax, eax
je 0x6ad82d00
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
call fcn.6adaeef0
add esp, 0xcc
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, esi
mov ecx, esi
xor ebx, ebx
shrd eax, edi, 0x14
and ecx, 0xfffff
and eax, 0xfffff
add ecx, eax
mov eax, edi
shr eax, 8
and eax, 0xfffff
add ecx, eax
mov eax, edi
shr eax, 0x1c
add ecx, eax
mov eax, 0x51eb851f
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea eax, [eax + eax*4]
sub ecx, eax
sub esi, ecx
sbb edi, ebx
imul eax, esi, 0x8f5c28f5
imul ecx, edi, 0xc28f5c29
add ecx, eax
mov eax, 0xc28f5c29
mul esi
mov edi, edx
mov esi, eax
add edi, ecx
shrd esi, edi, 1
mov dword [esp], esi
mov dword [esp + 0x50], esi
call fcn.6ad82260
mov dword [esp + 0x58], eax
test eax, eax
je 0x6add525a
test esi, esi
je 0x6ad83589
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x6c], ebp
lea esi, [esi]
nop
lea eax, [esp + 0x90]
mov ebx, dword [esp + 0x48]
add ebx, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov edi, ebx
mov dword [esp], ebx
call fcn.6ada6890
mov eax, dword [esp + 0xe0]
cmp dword [eax + 8], 0x10d00
jne 0x6ad82df5
and byte [esp + 0x97], 0xef
mov dword [esp + 4], 0x88
mov dword [esp], 1
call fcn.6adaef20
mov dword [esp + 0x30], eax
mov esi, eax
test eax, eax
je 0x6add5336
movzx eax, word [ebx + 0x18]
lea ecx, [esi + 0x10]
mov dword [esp + 0x44], ecx
mov word [esp + 0x4e], ax
mov eax, dword [ebx + 0x1a]
mov dword [esi + 0x24], eax
mov edx, dword [ebx + 0x1e]
mov dword [esi + 0x10], edx
mov edx, dword [ebx + 0x22]
mov dword [esi + 0x14], edx
mov edx, dword [ebx + 0x26]
mov dword [esi + 0x18], edx
mov edx, dword [ebx + 0x2a]
mov dword [esi + 0x1c], edx
mov eax, dword [ebx + 0x2e]
mov dword [esi + 0x20], eax
movzx eax, byte [esp + 0x97]
test al, 0x10
je 0x6ad83040
mov esi, dword [esp + 0x34]
test esi, esi
je 0x6ad83210
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0xa0]
xor edx, 1
or eax, edx
je 0x6ad82f80
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x98]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x94]
mov edi, dword [esp + 0x9c]
and eax, 0xffffff
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
test ecx, ecx
je 0x6add52b5
mov dword [esp + 0x28], esi
xor ebp, ebp
mov dword [esp + 0x2c], edi
jmp 0x6ad82eef
sub dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
sbb dword [esp + 0x2c], edx
add ebp, 1
cmp ebp, eax
je 0x6add52b5
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
add ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x3c]
mov eax, dword [eax + ebp*4]
adc ebx, dword [esp + 0x2c]
mov edx, dword [eax + 0x1c]
mov esi, eax
mov eax, dword [eax + 0x18]
mov edi, edx
cmp eax, ecx
sbb edi, ebx
jb 0x6ad82ed8
mov ecx, dword [esp + 0x30]
mov ebx, esi
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
movzx eax, byte [ecx + 0x2c]
mov dword [ecx + 0x30], ebx
lea edx, [ecx + 0x40]
add ebx, 0x20
mov byte [esp + 0x28], al
and eax, 0xfffffff0
or eax, 1
mov byte [ecx + 0x2c], al
mov eax, dword [ebx + 4]
mov dword [ebx + 4], edx
mov dword [ecx + 0x40], ebx
mov dword [ecx + 0x44], eax
mov dword [eax], edx
mov dword [ecx + 0x38], esi
mov dword [ecx + 0x3c], edi
cmp dword [esp + 0x44], 0x6ade3c80
je 0x6ad82f80
mov eax, dword [esp + 0x44]
mov dword [esp + 8], 0x14
mov dword [esp + 4], 0x6ade3c80
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x6ad830d6
mov eax, dword [esp + 0x30]
movzx eax, byte [eax + 0x2c]
mov byte [esp + 0x28], al
and eax, 0xf
cmp al, 1
jne 0x6ad82fa6
mov edi, dword [esp + 0x30]
mov edx, dword [edi + 0x44]
mov eax, dword [edi + 0x40]
mov dword [edx], eax
mov dword [eax + 4], edx
and byte [edi + 0x2c], 0xf0
mov edi, dword [esp + 0x30]
mov dword [esp], edi
call fcn.6ad82300
mov dword [esp], edi
call fcn.6adaeef0
add dword [esp + 0x48], 0x32
sub dword [esp + 0x50], 1
jne 0x6ad82dc0
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x6c]
test ebx, ebx
je 0x6ad82fee
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
call fcn.6ad82950
test eax, eax
je 0x6ad82fee
mov ebp, eax
jmp 0x6ad83302
mov eax, dword [esp + 0xe0]
cmp word [eax + 0x24], 1
je 0x6ad835bb
mov ecx, dword [esp + 0x60]
test ecx, ecx
jne 0x6add53f3
mov edx, dword [esp + 0x64]
test edx, edx
jne 0x6ad83603
mov eax, dword [esp + 0x68]
test eax, eax
jne 0x6add53da
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0x58]
mov dword [eax + 0x138], edi
jmp 0x6ad82ce3
mov edx, dword [esp + 0x34]
test edx, edx
jne 0x6ad833e0
test al, 4
je 0x6ad83408
mov dword [esp], 0x30
call fcn.6adaeec0
test eax, eax
je 0x6add538c
mov dword [esp + 8], eax
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0x30]
mov dword [esp + 4], eax
lea eax, [esp + 0x90]
mov dword [esp], eax
mov dword [esp + 0xc], edi
call fcn.6ada6790
mov eax, dword [esp + 0xe0]
add dword [eax + 0x13c], 1
cmp dword [esp + 0x44], 0x6ade3c80
je 0x6ad83200
mov eax, dword [esp + 0x44]
mov dword [esp + 8], 0x14
mov dword [esp + 4], 0x6ade3c80
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x6ad83200
mov dword [esp + 0x34], 0
mov eax, dword [esp + 0x30]
mov edi, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x38], eax
or eax, edi
mov dword [esp + 0x28], edi
je 0x6ad833c0
mov eax, dword [esp + 0xe0]
movzx edi, word [esp + 0x4e]
cmp word [eax + 0x24], di
jne 0x6ad833d0
movzx eax, byte [esp + 0x97]
test al, 2
je 0x6ad83130
mov edi, dword [esp + 0x30]
mov edx, dword [edi + 0x24]
test edx, edx
jne 0x6ad83188
mov esi, dword [esp + 0x34]
test esi, esi
jne 0x6ad82f80
jmp 0x6ad82fa6
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x30]
mov edx, dword [edi]
mov eax, dword [eax + 0x10]
and eax, dword [edi + 8]
mov ebx, dword [edx + eax*4]
test ebx, ebx
je 0x6ad83570
mov esi, dword [esp + 0x44]
jmp 0x6ad83162
mov ebx, dword [ebx]
test ebx, ebx
je 0x6ad83570
lea eax, [ebx + 0x10]
mov dword [esp + 8], 0x14
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x6ad83158
add dword [esp + 0x60], 1
jmp 0x6ad8311d
cmp edx, 1
jne 0x6add539a
test al, 0x10
jne 0x6add53bb
cmp word [esp + 0x4e], 1
jne 0x6add53c9
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0x54]
cmp dword [eax + 0x28], edi
je 0x6add5303
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0x54]
mov eax, dword [eax + 0x130]
lea ebx, [eax + edi*4]
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.6adafa60
mov dword [ebx], eax
mov eax, dword [esp + 0xe0]
mov eax, dword [eax + 0x130]
mov ebp, dword [eax + edi*4]
test ebp, ebp
je 0x6add5314
add edi, 1
mov dword [esp + 0x54], edi
jmp 0x6ad82fba
mov dword [esp + 0x34], 0
jmp 0x6ad82fa6
xor eax, eax
mov dword [esp + 0x28], ebx
mov ebp, dword [esp + 0x50]
mov esi, eax
jmp 0x6ad8323e
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xb8]
xor edx, 1
or eax, edx
cmp eax, 1
adc esi, 0
sub ebp, 1
je 0x6ad83260
mov eax, ebx
lea edx, [esp + 0xa8]
add ebx, 0x32
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.6ada6890
test byte [esp + 0xaf], 0x10
jne 0x6ad83220
mov dword [esp + 4], 4
mov ebx, dword [esp + 0x28]
mov dword [esp], esi
mov dword [esp + 0x40], esi
call fcn.6adaef20
mov dword [esp + 0x34], eax
mov ebp, eax
test eax, eax
je 0x6ad835f7
mov eax, esi
test esi, esi
je 0x6ad83440
xor esi, esi
mov dword [esp + 0x28], ebx
mov ebx, esi
mov esi, eax
jmp 0x6ad832ab
add ebx, 1
cmp ebx, esi
je 0x6ad83460
mov dword [esp], 0x30
call fcn.6adaeec0
mov dword [ebp + ebx*4], eax
test eax, eax
jne 0x6ad832a0
mov ebp, 0x27
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x40]
xor ebx, ebx
nop
mov eax, dword [esi + ebx*4]
add ebx, 1
mov dword [esp], eax
call fcn.6adaeef0
cmp ebx, edi
jb 0x6ad832d0
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.6adaeef0
mov edi, dword [esp + 0x30]
mov dword [esp], edi
call fcn.6ad82300
mov dword [esp], edi
call fcn.6adaeef0
mov eax, dword [esp + 0x58]
xor edi, edi
mov eax, dword [eax]
mov esi, dword [eax + edi*4]
test esi, esi
jne 0x6ad83350
jmp 0x6ad83386
cmp al, 1
ja 0x6ad833b0
jne 0x6ad83340
mov eax, dword [ebx + 0x30]
mov edx, dword [ebx + 0x40]
mov ecx, dword [ebx + 0x44]
mov dword [ecx], edx
mov dword [edx + 4], ecx
lea edx, [eax + 0x20]
cmp dword [eax + 0x20], edx
je 0x6ad835d8
lea esi, [esi]
and byte [ebx + 0x2c], 0xf0
mov dword [esp], ebx
call fcn.6adaeef0
test esi, esi
je 0x6ad83380
mov ebx, esi
mov esi, dword [esi]
movzx eax, byte [ebx + 0x2c]
and eax, 0xf
cmp al, 3
jbe 0x6ad83318
cmp al, 4
jne 0x6ad83340
mov eax, dword [ebx + 0x30]
mov dword [esp], eax
call fcn.6adc3db0
and byte [ebx + 0x2c], 0xf0
mov dword [esp], ebx
call fcn.6adaeef0
test esi, esi
jne 0x6ad83350
nop
mov eax, dword [esp + 0x58]
mov eax, dword [eax]
mov esi, dword [esp + 0x58]
add edi, 1
cmp dword [esi + 8], edi
jae 0x6ad8330a
mov dword [esp], eax
call fcn.6adaeef0
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.6adaeef0
jmp 0x6ad82ce3
mov eax, dword [ebx + 0x30]
mov dword [esp], eax
call fcn.6adaeef0
jmp 0x6ad83340
add dword [esp + 0x64], 1
jmp 0x6ad8311d
add dword [esp + 0x68], 1
jmp 0x6ad8311d
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
call fcn.6ad82950
test eax, eax
jne 0x6ad835fc
movzx eax, byte [esp + 0x97]
test al, 4
jne 0x6ad83054
lea esi, [esi]
mov edi, dword [esp + 0x94]
mov eax, dword [esp + 0x90]
xor eax, dword [esp + 0xa0]
and edi, 0xffffff
mov edx, edi
xor edx, dword [esp + 0xa4]
or eax, edx
je 0x6ad83054
jmp 0x6add5270
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0x40]
add dword [eax + 0x13c], edi
jmp 0x6ad82e67
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0xe0]
lea ebp, [esp + 0x80]
mov ebx, dword [esp + 0x28]
add eax, 0x148
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x28], eax
lea eax, [eax + esi*4 - 4]
mov dword [esp + 0x5c], eax
nop
lea eax, [esp + 0xa8]
mov dword [esp], edi
mov esi, ebx
add ebx, 0x32
mov dword [esp + 4], eax
mov edi, ebx
call fcn.6ada6890
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xb8]
xor edx, 1
or eax, edx
jne 0x6ad83490
mov eax, dword [esp + 0x28]
mov edi, dword [eax]
mov eax, dword [esp + 0xe0]
mov dword [esp + 4], eax
lea eax, [esp + 0xa8]
mov dword [esp], eax
mov dword [esp + 8], edi
call fcn.6ada66e0
mov eax, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
mov dword [esp + 8], 0x10
mov dword [esp + 4], ebp
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x10], edx
mov dword [esp], eax
call fcn.6ad90be0
test eax, eax
jne 0x6add5286
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov dword [edi + 0x18], eax
mov eax, dword [edi + 0x28]
mov dword [edi + 0x1c], edx
mov edx, dword [esp + 0x8c]
and eax, 0x3ff
shl edx, 0xa
or eax, edx
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x88]
mov dword [edi + 0x2c], eax
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x5c]
cmp eax, edi
je 0x6ad83440
add eax, 4
lea edi, [esi + 0x32]
mov dword [esp + 0x28], eax
jmp 0x6ad83490
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.6ad82560
jmp 0x6ad82fba
mov eax, dword [esp + 0xe0]
cmp word [eax + 0x24], 1
jne 0x6ad83024
mov dword [esp + 0x60], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x64], 0
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0x54]
cmp dword [eax + 0x28], edi
je 0x6ad83000
jmp 0x6add536d
mov edx, dword [eax]
mov dword [esp + 0x28], eax
mov dword [esp], edx
call fcn.6adb04f0
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.6adaeef0
jmp 0x6ad83340
mov eax, 0x27
mov ebp, eax
jmp 0x6ad832ee
jmp 0x6add540c
mov dword [esp], str.Not_enough_memory_to_read_blob_table_
mov ebp, 0x27
call fcn.6add55ba
jmp 0x6ad82ce3
mov dword [esp], str.Uncompressed_resource_has_size_in_wim___uncompressed_size
call fcn.6add55ba
mov ebp, 0x14
jmp 0x6ad832ee
mov ecx, dword [esp + 0xb0]
mov ebx, dword [esp + 0xb4]
mov dword [esp], str.Failed_to_read_header_of_solid_resource__offset_in_wim_llu_
mov dword [esp + 0x28], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.6add55ba
mov ebp, dword [esp + 0x28]
jmp 0x6ad832c4
mov dword [esp], str.blob_could_not_be_assigned_to_a_solid_resource
mov ebp, 0x14
call fcn.6add55ba
xor ebx, ebx
cmp dword [esp + 0x40], 0
je 0x6add52e7
mov eax, dword [esp + 0x34]
mov eax, dword [eax + ebx*4]
lea edx, [eax + 0x20]
cmp dword [eax + 0x20], edx
je 0x6add5357
add ebx, 1
cmp dword [esp + 0x40], ebx
jne 0x6add52cf
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.6adaeef0
cmp dword [esp + 0x30], 0
jne 0x6ad832ee
jmp 0x6ad83302
mov dword [esp], str.Found_more_metadata_resources_than_images
call fcn.6add560c
jmp 0x6ad8311d
mov dword [esp], str.Not_enough_memory_to_read_blob_table_
mov ebp, 0x27
call fcn.6add55ba
cmp dword [esp + 0x34], 0
jne 0x6add52c6
mov ebp, 0x27
jmp 0x6ad832ee
mov dword [esp], str.Not_enough_memory_to_read_blob_table_
mov ebp, 0x27
call fcn.6add55ba
cmp dword [esp + 0x34], 0
jne 0x6add52c6
jmp 0x6ad83302
mov edx, dword [eax]
sub dword [edx + 0x13c], 1
mov dword [esp], eax
call fcn.6adaeef0
jmp 0x6add52de
mov dword [esp], str.Could_not_find_metadata_resources_for_all_images
call fcn.6add560c
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0x54]
mov dword [eax + 0x28], edi
jmp 0x6ad83000
mov dword [esp], str.Not_enough_memory_to_read_blob_table_
call fcn.6add55ba
jmp 0x6add532c
mov dword [esp], str.Found_metadata_resource_with_refcnt___1
call fcn.6add55ba
cmp dword [esp + 0x34], 0
mov ebp, 0x14
jne 0x6add52c6
jmp 0x6add527c
mov dword [esp], str.Image_metadata_in_solid_resources_is_unsupported.
call fcn.6add55ba
jmp 0x6add53a6
mov dword [esp], str.Ignoring_metadata_resource_found_in_a_non_first_part_of_the_split_WIM
call fcn.6add560c
jmp 0x6ad8311d
mov eax, dword [esp + 0x68]
mov dword [esp], str.Ignoring__zu_blobs_with_wrong_part_number
mov dword [esp + 4], eax
call fcn.6add560c
jmp 0x6ad83024
mov eax, dword [esp + 0x60]
mov dword [esp], str.Ignoring__zu_duplicate_blobs
mov dword [esp + 4], eax
call fcn.6add560c
jmp 0x6ad8300c
mov eax, dword [esp + 0x64]
mov dword [esp], str.Ignoring__zu_empty_blobs
mov dword [esp + 4], eax
call fcn.6add560c
jmp 0x6ad83018