Function at 0x402090
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xe0
mov esi, dword [esp + 0x100]
mov ecx, dword [esp + 0xfc]
push 0x5802eb
call fcn.00424d80
mov byte [esi], 0
xorps xmm0, xmm0
movups xmmword [esp + 0xc8], xmm0
movups xmmword [esp + 0xb8], xmm0
mov dword [esp + 0xdc], 0
mov dword [esp + 0xd8], 0
lea edi, [esp + 0xb8]
mov ecx, edi
call fcn.0043f710
mov ebp, dword [0x58507c]
mov ecx, edi
push ebp
call fcn.004401e0
mov dword [esp + 0xbc], eax
mov esi, dword [0x585084]
mov ecx, edi
push esi
call fcn.004401e0
mov dword [esp + 0xc0], eax
xorps xmm0, xmm0
movups xmmword [esp + 0xc4], xmm0
movups xmmword [esp + 0xd0], xmm0
mov ecx, edi
push 0x5806a3
push str._require_sreject_s___s_S__s_s_._
call fcn.004152d0
xorps xmm0, xmm0
movups xmmword [esp + 0xa0], xmm0
movups xmmword [esp + 0x90], xmm0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
lea ebx, [esp + 0x90]
mov ecx, ebx
call fcn.0043f710
mov ecx, ebx
push ebp
call fcn.004401e0
mov dword [esp + 0x94], eax
mov ecx, ebx
push esi
call fcn.004401e0
mov dword [esp + 0x98], eax
xorps xmm0, xmm0
movups xmmword [esp + 0x9c], xmm0
movups xmmword [esp + 0xa8], xmm0
mov ecx, ebx
push 0x5806d3
push str.require_for_product:_s_S__s_S__s_s_._
call fcn.004152d0
xorps xmm0, xmm0
mov eax, dword [esp + 0xf4]
movups xmmword [esp + 0x78], xmm0
movups xmmword [esp + 0x68], xmm0
movups xmmword [esp + 0x58], xmm0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
movzx ebx, byte [eax]
lea esi, [eax + 1]
test bl, 1
mov dword [esp], esi
je 0x4021f8
mov esi, dword [eax + 8]
mov ebx, dword [eax + 4]
jmp 0x4021fa
shr ebx, 1
add ebx, esi
movups xmmword [esp + 0x34], xmm0
movups xmmword [esp + 0x24], xmm0
movups xmmword [esp + 0x14], xmm0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
lea ebp, [esp + 0x14]
mov ecx, edi
push 0x1040
push ebp
push ebx
push esi
call fcn.0041cb70
mov byte [esp + 0x13], al
mov dword [esp + 4], esi
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 4]
lea edi, [esp + 0x58]
mov ecx, edi
push 0
push ebp
push eax
push edx
call fcn.0041cd70
mov eax, dword [esp + 0x14]
test eax, eax
je 0x402267
mov dword [esp + 0x18], eax
push eax
call fcn.00420e70
add esp, 4
cmp byte [esp + 0x13], 0
mov ebp, dword [esp]
je 0x402287
cmp byte [esp + 0x84], 0
je 0x4023fe
mov eax, dword [esp + 0x58]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xf4]
movzx ebx, byte [eax]
test bl, 1
je 0x40229e
mov ebp, dword [eax + 8]
mov ebx, dword [eax + 4]
jmp 0x4022a0
shr ebx, 1
add ebx, ebp
xorps xmm0, xmm0
movups xmmword [esp + 0x34], xmm0
movups xmmword [esp + 0x24], xmm0
movups xmmword [esp + 0x14], xmm0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
lea ecx, [esp + 0x90]
push 0x1040
lea esi, [esp + 0x18]
push esi
push ebx
push ebp
call fcn.0041cb70
mov byte [esp], al
mov dword [esp + 4], ebp
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 4]
lea edi, [esp + 0x58]
mov ecx, edi
push 0
push esi
push eax
push edx
call fcn.0041cd70
mov eax, dword [esp + 0x14]
test eax, eax
je 0x402314
mov dword [esp + 0x18], eax
push eax
call fcn.00420e70
add esp, 4
cmp byte [esp + 0x84], 0
sete al
movzx ecx, byte [esp]
and cl, al
cmp cl, 1
jne 0x4023f7
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
cmp ecx, 2
mov edx, edi
cmovae edx, eax
cmp byte [edx + 0x14], 0
je 0x402440
cmp ecx, 2
cmovae edi, eax
mov ebx, dword [edi + 0xc]
mov esi, dword [edi + 0x10]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov edx, esi
sub edx, ebx
cmp edx, 0xfffffff0
jae 0x402b17
cmp edx, 0xa
ja 0x40245d
mov eax, edx
add al, dl
mov byte [esp + 0x14], al
lea eax, [esp + 0x15]
cmp ebx, esi
je 0x402489
cmp edx, 0x20
jb 0x4024dc
mov ecx, eax
sub ecx, ebx
cmp ecx, 0x20
jb 0x4024dc
mov dword [esp], edx
mov edi, edx
and edi, 0xffffffe0
lea ecx, [eax + edi]
lea edx, [ebx + edi]
xor ebp, ebp
nop word [eax + eax]
movups xmm0, xmmword [ebx + ebp]
movups xmm1, xmmword [ebx + ebp + 0x10]
movups xmmword [eax + ebp], xmm0
movups xmmword [eax + ebp + 0x10], xmm1
add ebp, 0x20
cmp edi, ebp
jne 0x4023d0
cmp dword [esp], edi
jne 0x4024e0
jmp 0x402540
xor ebx, ebx
jmp 0x402a8f
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
cmp ecx, 2
cmovae edi, eax
add edi, 0xc
push edi
lea eax, [esp + 0x18]
push eax
call fcn.00411b30
add esp, 8
movzx ecx, byte [esp + 0x14]
mov eax, ecx
and al, 1
je 0x402493
mov ecx, dword [esp + 0x18]
cmp ecx, 6
je 0x40249a
xor ecx, ecx
jmp 0x4024ba
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
jmp 0x402543
mov edi, edx
or edi, 0xf
lea eax, [edi + 1]
push eax
mov ebp, edx
call fcn.00420cd0
mov edx, ebp
add esp, 4
mov dword [esp + 0x1c], eax
add edi, 2
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ebp
cmp ebx, esi
jne 0x4023a1
mov ecx, eax
mov byte [eax], 0
jmp 0x402543
shr ecx, 1
cmp ecx, 6
jne 0x40243c
lea ecx, [esp + 0x14]
push 6
push str.reject
push 0xffffffffffffffff
push 0
call fcn.00425f30
test eax, eax
sete cl
movzx eax, byte [esp + 0x14]
and al, 1
mov edx, dword [esp + 0x100]
mov byte [edx], cl
test al, al
je 0x402584
push dword [esp + 0x1c]
call fcn.00420e70
add esp, 4
jmp 0x402584
mov ecx, eax
mov edx, ebx
mov edi, esi
sub edi, edx
mov eax, edx
not eax
add eax, esi
and edi, 7
je 0x4024fa
nop
movzx ebx, byte [edx]
mov byte [ecx], bl
inc edx
inc ecx
dec edi
jne 0x4024f0
cmp eax, 7
jb 0x402540
nop
movzx eax, byte [edx]
mov byte [ecx], al
movzx eax, byte [edx + 1]
mov byte [ecx + 1], al
movzx eax, byte [edx + 2]
mov byte [ecx + 2], al
movzx eax, byte [edx + 3]
mov byte [ecx + 3], al
movzx eax, byte [edx + 4]
mov byte [ecx + 4], al
movzx eax, byte [edx + 5]
mov byte [ecx + 5], al
movzx eax, byte [edx + 6]
mov byte [ecx + 6], al
movzx eax, byte [edx + 7]
mov byte [ecx + 7], al
add edx, 8
add ecx, 8
cmp edx, esi
jne 0x402500
mov byte [ecx], 0
mov ecx, dword [esp + 0xfc]
test byte [ecx], 1
je 0x402573
mov eax, dword [ecx + 8]
mov byte [eax], 0
mov dword [ecx + 4], 0
test byte [ecx], 1
je 0x402573
push dword [ecx + 8]
call fcn.00420e70
mov ecx, dword [esp + 0x100]
add esp, 4
mov eax, dword [esp + 0x1c]
mov dword [ecx + 8], eax
movsd xmm0, qword [esp + 0x14]
movsd qword [ecx], xmm0
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
lea edx, [eax + 0x20]
cmp ecx, 3
lea ebx, [esp + 0x64]
lea edi, [esp + 0x6c]
cmovb edx, edi
cmp byte [edx], 0
je 0x402658
lea edx, [eax + 0x18]
add eax, 0x1c
cmp ecx, 3
cmovb edx, ebx
lea ecx, [esp + 0x68]
cmovae ecx, eax
mov ebp, dword [edx]
mov esi, dword [ecx]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov edx, esi
sub edx, ebp
cmp edx, 0xfffffff0
jae 0x402b17
cmp edx, 0xa
ja 0x402675
mov eax, edx
add al, dl
mov byte [esp + 0x14], al
lea eax, [esp + 0x15]
cmp ebp, esi
je 0x4026a5
cmp edx, 0x20
jb 0x4026ac
mov ecx, eax
sub ecx, ebp
cmp ecx, 0x20
jb 0x4026ac
mov dword [esp], edx
mov ebx, edx
and ebx, 0xffffffe0
lea ecx, [eax + ebx]
lea edx, [ebx + ebp]
xor edi, edi
movups xmm0, xmmword [ebp + edi]
movups xmm1, xmmword [ebp + edi + 0x10]
movups xmmword [eax + edi], xmm0
movups xmmword [eax + edi + 0x10], xmm1
add edi, 0x20
cmp ebx, edi
jne 0x402630
cmp dword [esp], ebx
lea ebx, [esp + 0x64]
jne 0x4026b0
jmp 0x402730
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
jmp 0x402737
mov edi, edx
or edi, 0xf
lea eax, [edi + 1]
push eax
mov ebx, edx
call fcn.00420cd0
mov edx, ebx
lea ebx, [esp + 0x68]
add esp, 4
mov dword [esp + 0x1c], eax
add edi, 2
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], edx
cmp ebp, esi
jne 0x40260a
mov ecx, eax
jmp 0x402730
mov ecx, eax
mov edx, ebp
mov ebp, ebx
mov ebx, esi
sub ebx, edx
mov edi, edx
not edi
add edi, esi
and ebx, 7
je 0x4026da
nop word cs:[eax + eax]
movzx eax, byte [edx]
mov byte [ecx], al
inc edx
inc ecx
dec ebx
jne 0x4026d0
cmp edi, 7
mov ebx, ebp
jb 0x402730
nop word cs:[eax + eax]
movzx eax, byte [edx]
mov byte [ecx], al
movzx eax, byte [edx + 1]
mov byte [ecx + 1], al
movzx eax, byte [edx + 2]
mov byte [ecx + 2], al
movzx eax, byte [edx + 3]
mov byte [ecx + 3], al
movzx eax, byte [edx + 4]
mov byte [ecx + 4], al
movzx eax, byte [edx + 5]
mov byte [ecx + 5], al
movzx eax, byte [edx + 6]
mov byte [ecx + 6], al
movzx eax, byte [edx + 7]
mov byte [ecx + 7], al
add edx, 8
add ecx, 8
cmp edx, esi
jne 0x4026f0
mov byte [ecx], 0
lea edi, [esp + 0x6c]
mov esi, dword [esp + 0xf8]
test byte [esi], 1
je 0x402760
mov eax, dword [esi + 8]
mov byte [eax], 0
mov dword [esi + 4], 0
test byte [esi], 1
je 0x402760
push dword [esi + 8]
call fcn.00420e70
add esp, 4
mov eax, dword [esp + 0x1c]
mov dword [esi + 8], eax
movsd xmm0, qword [esp + 0x14]
movsd qword [esi], xmm0
movzx eax, byte [esi]
test al, 1
je 0x402782
mov eax, dword [esi + 4]
cmp eax, 5
je 0x402789
jmp 0x4027ab
shr eax, 1
cmp eax, 5
jne 0x4027ab
mov ecx, esi
push 5
push str.board
push 0xffffffffffffffff
push 0
call fcn.00425f30
test eax, eax
jne 0x4027ab
mov ecx, esi
push str.product
call fcn.00424d80
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
lea edx, [eax + 0x2c]
cmp ecx, 4
cmovae edi, edx
cmp byte [edi], 0
je 0x402895
lea edx, [eax + 0x24]
add eax, 0x28
cmp ecx, 4
cmovae ebx, edx
lea ecx, [esp + 0x68]
cmovae ecx, eax
mov edi, dword [ebx]
mov ebp, dword [ecx]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
mov ebx, ebp
sub ebx, edi
cmp ebx, 0xfffffff0
jae 0x402b20
cmp ebx, 0xa
ja 0x4028b2
mov eax, ebx
add al, bl
mov byte [esp + 4], al
lea eax, [esp + 5]
cmp edi, ebp
je 0x4028da
cmp ebx, 0x20
jb 0x4028e1
mov ecx, eax
sub ecx, edi
cmp ecx, 0x20
jb 0x4028e1
mov dword [esp], ebp
mov ebp, ebx
and ebp, 0xffffffe0
lea ecx, [eax + ebp]
lea edx, [edi + ebp]
xor esi, esi
nop word [eax + eax]
movups xmm0, xmmword [edi + esi]
movups xmm1, xmmword [edi + esi + 0x10]
movups xmmword [eax + esi], xmm0
movups xmmword [eax + esi + 0x10], xmm1
add esi, 0x20
cmp ebp, esi
jne 0x402870
cmp ebx, ebp
mov ebp, dword [esp]
jne 0x4028e5
jmp 0x402950
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
jmp 0x402953
mov esi, ebx
or esi, 0xf
lea eax, [esi + 1]
push eax
call fcn.00420cd0
add esp, 4
mov dword [esp + 0xc], eax
add esi, 2
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
cmp edi, ebp
jne 0x402841
mov ecx, eax
mov byte [eax], 0
jmp 0x402953
mov ecx, eax
mov edx, edi
mov edi, ebp
sub edi, edx
mov eax, edx
not eax
add eax, ebp
and edi, 7
je 0x40290a
nop word cs:[eax + eax]
movzx ebx, byte [edx]
mov byte [ecx], bl
inc edx
inc ecx
dec edi
jne 0x402900
cmp eax, 7
jb 0x402950
nop
movzx eax, byte [edx]
mov byte [ecx], al
movzx eax, byte [edx + 1]
mov byte [ecx + 1], al
movzx eax, byte [edx + 2]
mov byte [ecx + 2], al
movzx eax, byte [edx + 3]
mov byte [ecx + 3], al
movzx eax, byte [edx + 4]
mov byte [ecx + 4], al
movzx eax, byte [edx + 5]
mov byte [ecx + 5], al
movzx eax, byte [edx + 6]
mov byte [ecx + 6], al
movzx eax, byte [edx + 7]
mov byte [ecx + 7], al
add edx, 8
add ecx, 8
cmp edx, ebp
jne 0x402910
mov byte [ecx], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov word [esp + 0x4c], 0x7c02
lea eax, [esp + 0x4c]
lea ebx, [esp + 4]
push eax
push ebx
lea eax, [esp + 0x1c]
push eax
call fcn.0042ad20
add esp, 0xc
test byte [esp + 0x4c], 1
je 0x40299c
push dword [esp + 0x54]
call fcn.00420e70
add esp, 4
test byte [esp + 4], 1
je 0x4029af
push dword [esp + 0xc]
call fcn.00420e70
add esp, 4
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
cmp edi, ebp
je 0x402a41
mov esi, dword [esp + 0x104]
jmp 0x4029d7
add edi, 0xc
cmp edi, ebp
je 0x402a3d
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
push edi
push ebx
call fcn.0042b6c0
add esp, 8
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 8]
jae 0x402a20
push ebx
call fcn.00424040
add dword [esi + 4], 0xc
test byte [esp + 4], 1
je 0x4029d0
jmp 0x402a2f
mov ecx, esi
push ebx
call fcn.0041f190
test byte [esp + 4], 1
je 0x4029d0
push dword [esp + 0xc]
call fcn.00420e70
add esp, 4
jmp 0x4029d0
mov edi, dword [esp + 0x14]
test edi, edi
je 0x402a8d
mov eax, dword [esp + 0x18]
mov ecx, edi
cmp eax, edi
jne 0x402a66
jmp 0x402a80
mov eax, esi
cmp esi, edi
je 0x402a7c
lea esi, [eax - 0xc]
test byte [eax - 0xc], 1
je 0x402a60
push dword [eax - 4]
call fcn.00420e70
add esp, 4
jmp 0x402a60
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], edi
push ecx
call fcn.00420e70
add esp, 4
mov bl, 1
mov eax, dword [esp + 0x58]
test eax, eax
je 0x402aa4
mov dword [esp + 0x5c], eax
push eax
call fcn.00420e70
add esp, 4
mov esi, dword [esp + 0xb0]
test esi, esi
je 0x402acb
mov eax, 0xffffffff
lock xadd dword [esi + 4], eax
test eax, eax
jne 0x402acb
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov ecx, esi
call fcn.00476060
lea ecx, [esp + 0x90]
call fcn.0043f7f0
mov esi, dword [esp + 0xd8]
test esi, esi
je 0x402afe
mov eax, 0xffffffff
lock xadd dword [esi + 4], eax
test eax, eax
jne 0x402afe
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov ecx, esi
call fcn.00476060
lea ecx, [esp + 0xb8]
call fcn.0043f7f0
mov eax, ebx
add esp, 0xe0
pop esi
pop edi
pop ebx
pop ebp
ret
lea ecx, [esp + 0x14]
call fcn.00423df0
lea ecx, [esp + 4]
call fcn.00423df0
nop dword [eax]