Function at 0x10022a30
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [edx + 8]
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov ebx, ecx
mov dword [ebp - 4], edx
mov cl, 0x20
mov edx, dword [edx + 0xc]
push edi
call fcn.1004e070
mov edx, dword [ebp + 8]
mov edi, eax
dec edx
cmp edx, 0x29
ja case.0x10022a62.5
movzx ecx, byte [edx + 0x10023210]
jmp dword [ecx*4 + 0x100231c4]
cmp dword [ebx + 0x1c], 3
jne 0x10022b83
mov eax, dword [ebx + 0x390]
cmp edi, dword [ebx + 0x394]
jge 0x10022a86
shl edi, 4
add eax, edi
mov eax, dword [eax + 0xc]
mov edi, dword [ebp - 4]
mov ecx, dword [ebx + 0x398]
mov dword [ebp + 8], eax
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 0x398]
mov ecx, dword [ebp + 8]
add eax, 8
mov dword [ebp - 4], eax
test ecx, ecx
je 0x10022ae5
mov eax, ecx
xor ecx, ecx
cdq
add ecx, 1
mov edx, dword [ebp - 4]
adc eax, 0
mov dword [edx], ecx
mov dword [edx + 4], eax
mov eax, dword [ebx + 0x398]
mov ecx, dword [edi + 0x10]
mov edx, dword [edi + 0x14]
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
add dword [ebx + 0x398], 0x18
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [eax], 8
mov dword [eax + 4], 0
movzx eax, byte [esi + 7]
cdq
mov ecx, eax
mov edi, edx
movzx eax, byte [esi + 6]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 5]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 4]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 3]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 2]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 1]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
mov eax, dword [ebx + 0x398]
add ecx, dword [ebp + 0x18]
adc edi, dword [ebp + 0x1c]
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edi
add dword [ebx + 0x398], 0x18
push dword [ebp + 0x1c]
mov ecx, esi
push dword [ebp + 0x18]
call fcn.10001170
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebx + 0x1c], 3
jne 0x10022c03
mov eax, dword [ebx + 0x398]
mov edi, dword [ebp - 4]
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [ebx + 0x398]
mov edi, dword [ebp + 0x18]
mov dword [eax + 8], 8
mov dword [eax + 0xc], 0
movzx eax, byte [esi + 3]
movzx ecx, byte [esi + 2]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 1]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi]
shl eax, 8
or eax, ecx
mov ecx, dword [ebx + 0x398]
cdq
add eax, edi
adc edx, dword [ebp + 0x1c]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], edx
add dword [ebx + 0x398], 0x18
jmp 0x10022c06
mov edi, dword [ebp + 0x18]
movzx ecx, byte [esi + 3]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
add ecx, edi
jmp 0x10023171
cmp dword [ebx + 0x1c], 3
jne case.0x10022a62.4
mov eax, dword [ebx + 0x390]
cmp edi, dword [ebx + 0x394]
jge 0x10022c48
shl edi, 4
add eax, edi
mov eax, dword [eax + 0xc]
mov dword [ebp + 8], eax
test eax, eax
je case.0x10022a62.4
mov ecx, dword [ebx + 0x398]
mov eax, dword [ebp - 4]
mov edi, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [ebp + 8]
mov dword [ecx], edx
mov dword [ecx + 4], edi
mov ecx, dword [ebx + 0x398]
mov edi, dword [ebp - 4]
cdq
xor edx, edx
add edx, 2
mov dword [ecx + 8], edx
adc eax, 0
mov dword [ecx + 0xc], eax
movzx eax, byte [esi + 3]
movzx ecx, byte [esi + 2]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 1]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi]
shl eax, 8
or eax, ecx
mov ecx, dword [ebx + 0x398]
cdq
add eax, dword [edi + 0x10]
adc edx, dword [edi + 0x14]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], edx
add dword [ebx + 0x398], 0x18
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x18]
sub edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x1c]
mov ecx, edx
sbb eax, dword [ebp + 0x14]
add ecx, 0x80000000
adc eax, 0
test eax, eax
ja 0x1002318e
jb 0x10022ce9
cmp ecx, 0xffffffff
ja 0x1002318e
movzx ecx, byte [esi + 3]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
add ecx, edx
jmp 0x10023171
mov edi, dword [ebp - 4]
mov eax, dword [ebx + 0x350]
mov edx, dword [edi + 0x10]
sub edx, dword [eax + 0x30]
mov ecx, dword [edi + 0x14]
sbb ecx, dword [eax + 0x34]
add edx, dword [ebp + 0x18]
adc ecx, dword [ebp + 0x1c]
push ecx
push edx
mov ecx, esi
call fcn.10001170
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebx + 0x1c], 3
jne 0x10022e2d
mov eax, dword [ebx + 0x390]
cmp edi, dword [ebx + 0x394]
jge 0x10022d59
shl edi, 4
add eax, edi
mov eax, dword [eax + 0xc]
mov dword [ebp + 8], eax
test eax, eax
je 0x10022e2d
mov ecx, dword [ebx + 0x398]
mov eax, dword [ebp - 4]
mov edi, dword [eax + 4]
mov edx, dword [eax]
mov dword [ecx], edx
mov dword [ecx + 4], edi
mov eax, dword [ebp + 8]
mov ecx, dword [ebx + 0x398]
cdq
xor edx, edx
add edx, 0x18
mov dword [ecx + 8], edx
adc eax, 0
mov dword [ecx + 0xc], eax
movzx eax, byte [esi + 7]
cdq
mov ecx, eax
mov edi, edx
movzx eax, byte [esi + 6]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 5]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 4]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 3]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 2]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 1]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
mov eax, dword [ebp - 4]
add ecx, dword [eax + 0x10]
adc edi, dword [eax + 0x14]
mov eax, dword [ebx + 0x398]
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edi
add dword [ebx + 0x398], 0x18
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x18]
sub ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x1c]
sbb eax, dword [ebp + 0x14]
push eax
push ecx
mov ecx, esi
call fcn.10001170
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
sub ecx, dword [eax + 0x10]
sbb edx, dword [eax + 0x14]
mov eax, ecx
mov byte [esi], cl
shr eax, 8
mov byte [esi + 1], al
mov eax, edx
shr ecx, 0x10
mov byte [esi + 4], dl
shr edx, 0x10
mov byte [esi + 2], cl
shr ecx, 8
shr eax, 8
mov byte [esi + 6], dl
shr edx, 8
mov byte [esi + 5], al
mov byte [esi + 7], dl
mov byte [esi + 3], cl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebx + 0x390]
cmp edi, dword [ebx + 0x394]
jge 0x10022ea2
shl edi, 4
add edx, edi
movzx ecx, byte [esi + 3]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
mov eax, dword [ebx + 0x350]
add ecx, dword [eax + 0x30]
sub ecx, dword [ebp + 0x10]
add ecx, 0xfffffffc
add ecx, dword [edx]
jmp 0x10023171
movzx ecx, byte [esi + 3]
movzx eax, byte [esi + 2]
mov edi, dword [ebp - 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
mov eax, dword [ebx + 0x350]
add ecx, dword [eax + 0x30]
add ecx, dword [edi + 0x10]
sub ecx, dword [ebp + 0x10]
jmp 0x10023171
mov eax, dword [ebx + 0x350]
mov edi, dword [ebp - 4]
mov ecx, dword [eax + 0x30]
add ecx, dword [edi + 0x10]
mov eax, dword [eax + 0x34]
adc eax, dword [edi + 0x14]
sub ecx, dword [ebp + 0x10]
sbb eax, dword [ebp + 0x14]
push eax
push ecx
mov ecx, esi
call fcn.10001170
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx ecx, byte [esi + 3]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
mov eax, dword [ebx + 0x350]
sub ecx, dword [eax + 0x30]
jmp 0x1002316e
mov edx, dword [ebx + 0x390]
cmp edi, dword [ebx + 0x394]
jge 0x10022f78
shl edi, 4
add edx, edi
movzx ecx, byte [esi + 3]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
add ecx, dword [edx]
jmp 0x10023171
mov eax, dword [ebx + 0x390]
cmp edi, dword [ebx + 0x394]
jge 0x10022fb0
shl edi, 4
add eax, edi
push 0
push dword [eax]
mov ecx, esi
call fcn.10001170
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebx + 0x350]
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x1c]
sub edx, dword [ecx + 0x30]
sbb eax, dword [ecx + 0x34]
mov ecx, esi
push eax
push edx
call fcn.10001170
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [esi - 4]
mov dword [ebp + 8], 0xc
mov edx, 0x100598f0
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x1002319f
add ecx, 4
add edx, 4
sub dword [ebp + 8], 4
jae 0x10023000
movups xmm0, xmmword [0x1005893c]
mov eax, dword [ebp - 4]
lea ecx, [edi + edi*2]
movups xmmword [esi - 4], xmm0
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0
mov eax, dword [ebx + 0x378]
mov eax, dword [eax + 4]
lea edx, [eax + ecx*8]
mov eax, dword [ebx + 0x340]
movzx ecx, word [edx + 6]
movzx ebx, byte [esi + 0xb]
shl ebx, 8
mov ecx, dword [eax + ecx*4]
movzx eax, byte [esi + 0xa]
or ebx, eax
movzx eax, byte [esi + 9]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 8]
shl ebx, 8
or ebx, eax
sub ebx, dword [ecx + 0x30]
add ebx, dword [edx + 8]
sub ebx, dword [ecx]
mov eax, ebx
mov byte [esi + 8], bl
shr ebx, 0x10
shr eax, 8
mov byte [esi + 0xa], bl
shr ebx, 8
mov byte [esi + 9], al
mov byte [esi + 0xb], bl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi - 3]
cmp eax, dword [0x10059654]
jne 0x100231b0
mov eax, dword [esi + 1]
cmp eax, dword [0x10059658]
jne 0x100231b0
mov eax, dword [esi + 5]
cmp eax, dword [0x1005965c]
jne 0x100231b0
movq xmm0, qword [str.fffdH]
movq qword [esi - 3], xmm0
mov eax, dword [0x100598e4]
mov dword [esi + 5], eax
mov eax, dword [ebp - 4]
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x378]
lea ecx, [edi + edi*2]
movzx edx, byte [esi + 3]
shl edx, 8
mov eax, dword [eax + 4]
movzx ecx, word [eax + ecx*8 + 6]
mov eax, dword [ebx + 0x340]
mov ecx, dword [eax + ecx*4]
movzx eax, byte [esi + 2]
or edx, eax
movzx eax, byte [esi + 1]
shl edx, 8
or edx, eax
movzx eax, byte [esi]
shl edx, 8
or edx, eax
sub edx, dword [ecx + 0x30]
sub edx, dword [ecx]
add edx, dword [ebp + 0x18]
mov eax, edx
mov byte [esi], dl
shr eax, 8
shr edx, 0x10
mov byte [esi + 1], al
mov byte [esi + 2], dl
shr edx, 8
mov byte [esi + 3], dl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx ecx, byte [esi + 3]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
sub ecx, dword [ebx + 0x3b0]
add ecx, dword [ebp + 0x18]
mov eax, ecx
mov byte [esi], cl
shr eax, 8
shr ecx, 0x10
mov byte [esi + 1], al
mov byte [esi + 2], cl
shr ecx, 8
mov byte [esi + 3], cl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, ebx
call fcn.1002c040
push str.internal_error:_relocation_failed
call fcn.1002c510
mov ecx, ebx
call fcn.1002c040
push str.unexpected_R_X86_64_TLSGD_pattern
call fcn.1002c510
mov ecx, ebx
call fcn.1002c040
push str.unexpected_R_X86_64_TLSLD_pattern
call fcn.1002c510
nop dword [eax]
imul ebp, dword [edx], 0x2c2b1002
add dl, byte [eax]
das
add dl, byte [eax]
mov edi, 0x4c10022c
add dl, byte cs:[eax]
dec edx
xor dword [edx], eax
adc byte [edi - 0x65effdd2], cl
sub eax, dword [edx]
adc dl, ch
das
add dl, byte [eax]
xchg ebx, eax
xor byte [edx], al
adc ch, ch
xor byte [edx], al
adc byte [ecx], bh
das
add dl, byte [eax]
cmp al, 0x2d
add dl, byte [eax]
lds ebp, [edi]
add dl, byte [eax]
salc
add dl, byte cs:[eax]
popfd
das
add dl, byte [eax]
or ebp, dword [edi]
add dl, byte [eax]
push cs
sub eax, 830935042
add dl, byte [eax]
add byte [ecx], al
add al, byte [ebx]
adc al, byte [esp + eax]
add eax, 302450438
adc dl, byte [edx]
adc dl, byte [edx]
adc dl, byte [edx]
or byte [ecx], cl
or cl, byte [ebx]
or cl, byte [ecx + 269618958]
adc dl, byte [ecx]
adc dl, byte [edx]
adc dl, byte [edx]
adc dl, byte [edx]
adc dl, byte [edx]
adc al, byte [esi]
push es
int3