Function at 0x490b50
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4dadd0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3c
push ebx
push esi
mov ebx, ecx
push edi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 4], 0
mov eax, 0x5a4d
mov esi, dword [ebp + 8]
cmp word [esi], ax
jne 0x49107a
mov edx, dword [esi + 0x3c]
add edx, esi
cmp dword [edx], 0x4550
jne 0x49107a
movzx eax, word [edx + 4]
mov ecx, 0x14c
lea edi, [ecx - 0x4c]
cmp ax, cx
jne 0x490bc7
test word [edx + 0x16], di
je 0x490bc7
mov ecx, 0x10b
cmp word [edx + 0x18], cx
jne 0x490bc7
mov dword [ebx + 0x30], 1
jmp 0x490c19
mov ecx, 0x8664
mov dword [ebp - 0x14], 0x20b
cmp ax, cx
jne 0x490bf0
test word [edx + 0x16], di
jne 0x490bf0
mov ecx, dword [ebp - 0x14]
cmp word [edx + 0x18], cx
jne 0x490bf0
mov dword [ebx + 0x30], 3
jmp 0x490c19
mov ecx, 0x200
cmp ax, cx
jne 0x490c12
test word [edx + 0x16], di
jne 0x490c12
mov eax, dword [ebp - 0x14]
cmp word [edx + 0x18], ax
jne 0x490c12
mov dword [ebx + 0x30], 2
jmp 0x490c19
mov dword [ebx + 0x30], 0
mov eax, dword [edx + 0xec]
lea ecx, [edx + 0xf8]
mov edi, dword [edx + 0xe8]
movzx edx, word [edx + 6]
mov dword [ebp - 0x24], eax
xor eax, eax
test edx, edx
je 0x490c5d
cmp dword [ecx], 0x7865742e
jne 0x490c46
cmp dword [ecx + 4], 0x74
je 0x490c50
inc eax
add ecx, 0x28
cmp eax, edx
jl 0x490c38
jmp 0x490c5d
mov eax, dword [ecx + 0x14]
sub eax, dword [ecx + 0xc]
add eax, esi
add eax, edi
mov dword [ebx + 8], eax
mov edx, dword [ebx + 8]
test edx, edx
je 0x49107a
mov edx, dword [edx + 8]
sub edx, dword [ecx + 0xc]
add edx, dword [ecx + 0x14]
add edx, esi
mov dword [ebx + 0xc], edx
cmp dword [edx], 0x424a5342
jne 0x49107a
mov eax, dword [edx + 0xc]
lea ecx, [edx + 0x10]
push eax
push ecx
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x34], 0xf
mov dword [ebp - 0x38], 0
mov byte [ebp - 0x48], 0
call fcn.0049d1b0
lea esi, [ebx + 0x34]
lea eax, [ebp - 0x48]
mov byte [ebp - 4], 1
cmp esi, eax
je 0x490ced
mov eax, dword [esi + 0x14]
cmp eax, 0x10
jb 0x490cc5
inc eax
mov ecx, esi
push eax
push dword [esi]
call fcn.0049d380
mov dword [esi + 0x14], 0xf
cmp dword [esi + 0x14], 0x10
mov dword [esi + 0x10], 0
jb 0x490cdd
mov eax, dword [esi]
jmp 0x490cdf
mov eax, esi
mov byte [eax], 0
mov ecx, esi
lea eax, [ebp - 0x48]
push eax
call fcn.0049ca10
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x34]
cmp eax, 0x10
jb 0x490d06
inc eax
lea ecx, [ebp - 0x48]
push eax
push dword [ebp - 0x48]
call fcn.0049d380
mov edi, dword [ebx + 0x44]
nop dword [eax]
cmp dword [esi + 0x14], 0x10
jb 0x490d1a
mov eax, dword [esi]
jmp 0x490d1c
mov eax, esi
cmp byte [eax + edi], 0
jne 0x490d9f
mov ecx, dword [esi + 0x10]
cmp ecx, edi
jb 0x490d95
mov eax, ecx
sub eax, edi
cmp eax, 1
ja 0x490d4d
mov dword [esi + 0x10], edi
cmp dword [esi + 0x14], 0x10
jb 0x490d44
mov eax, dword [esi]
mov byte [eax + edi], 0
dec edi
jmp 0x490d10
mov eax, esi
mov byte [eax + edi], 0
dec edi
jmp 0x490d10
cmp dword [esi + 0x14], 0x10
jb 0x490d57
mov eax, dword [esi]
jmp 0x490d59
mov eax, esi
dec ecx
lea edx, [eax + edi]
mov eax, ecx
mov dword [ebp - 0x14], ecx
sub eax, edi
je 0x490d77
push eax
lea eax, [edx + 1]
push eax
push edx
call fcn.004a2e00
mov ecx, dword [ebp - 0x14]
add esp, 0xc
cmp dword [esi + 0x14], 0x10
mov dword [esi + 0x10], ecx
jb 0x490d89
mov eax, dword [esi]
dec edi
mov byte [ecx + eax], 0
jmp 0x490d10
mov eax, esi
dec edi
mov byte [ecx + eax], 0
jmp 0x490d10
push str.invalid_string_position
call fcn.004a0dba
mov ecx, dword [ebx + 0xc]
xor edi, edi
mov eax, dword [ecx + 0xc]
add ecx, 0x10
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x20], eax
lea ebx, [eax + 4]
cmp cx, word [eax + 2]
jae 0x490e79
mov eax, dword [ebp - 0x1c]
add eax, 0x20
mov dword [ebp - 0x14], eax
nop word [eax + eax]
cmp byte [ebx + 8], 0
lea esi, [ebx + 8]
mov dword [ebp - 0x34], 0xf
mov dword [ebp - 0x38], 0
mov byte [ebp - 0x48], 0
jne 0x490def
xor ecx, ecx
jmp 0x490dfd
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x490df4
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0x48]
call fcn.0049d1b0
lea eax, [ebp - 0x48]
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x14]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0048ece0
mov ecx, dword [ebp - 0x28]
movq xmm0, qword [ebx]
movq qword [ecx + 0x28], xmm0
mov al, byte [ebx + 8]
mov byte [ecx + 0x30], al
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x34]
cmp eax, 0x10
jb 0x490e46
inc eax
lea ecx, [ebp - 0x48]
push eax
push dword [ebp - 0x48]
call fcn.0049d380
lea ecx, [esi + 1]
nop dword [eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x490e50
sub esi, ecx
add ebx, 9
add ebx, esi
test bl, 3
je 0x490e69
inc ebx
test bl, 3
jne 0x490e63
mov eax, dword [ebp - 0x20]
inc edi
movzx eax, word [eax + 2]
cmp edi, eax
jl 0x490dd0
push 2
push 0x4ff6e0
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x34], 0xf
mov dword [ebp - 0x38], 0
mov byte [ebp - 0x48], 0
call fcn.0049d1b0
mov byte [ebp - 4], 3
lea eax, [ebp - 0x48]
mov ebx, dword [ebp - 0x1c]
push eax
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebx + 0x20]
call fcn.0048ece0
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x28]
add eax, dword [ebx + 0xc]
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 0x34]
cmp eax, 0x10
jb 0x490ed2
inc eax
lea ecx, [ebp - 0x48]
push eax
push dword [ebp - 0x48]
call fcn.0049d380
mov edx, dword [ebx + 0x10]
lea edi, [ebx + 0x18]
mov cl, byte [edx + 6]
mov al, cl
and al, 1
mov eax, 0
setne al
test cl, 2
lea eax, [eax*2 + 2]
mov dword [ebx + 0x4c], eax
mov eax, 0
setne al
test cl, 4
lea eax, [eax*2 + 2]
mov dword [ebx + 0x50], eax
mov eax, 0
setne al
lea eax, [eax*2 + 2]
mov dword [ebx + 0x54], eax
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0xc]
add edx, 0x18
mov dword [edi], eax
xor esi, esi
mov dword [edi + 4], ecx
mov dword [ebp - 0x1c], edx
nop
push esi
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.0048ed70
mov byte [ebp - 4], 4
mov edi, dword [eax + 4]
mov eax, dword [eax]
mov dword [ebp - 0x20], eax
cmp edi, 0x40
jae 0x4910bc
xor edx, edx
mov eax, edi
and eax, 0x3f
xor ecx, ecx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
mov eax, dword [ebp - 0x20]
cmovae ecx, edx
shr edi, 6
and edx, dword [eax + edi*8]
and ecx, dword [eax + edi*8 + 4]
or edx, ecx
je 0x490f80
mov al, 1
jmp 0x490f82
xor al, al
test al, al
mov byte [ebp - 4], 0
lea eax, [ebp - 0x20]
mov dword [ebp - 0x20], esi
lea ecx, [ebx + 0x28]
push eax
je 0x490fb0
lea eax, [ebp - 0x28]
push eax
call fcn.0048fe80
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x28]
mov eax, dword [edx]
add edx, 4
mov dword [ecx + 0x14], eax
mov dword [ebp - 0x1c], edx
jmp 0x490fc3
lea eax, [ebp - 0x18]
push eax
call fcn.0048fe80
mov eax, dword [ebp - 0x18]
mov dword [eax + 0x14], 0
inc esi
lea edi, [ebx + 0x18]
cmp esi, 0x2c
jbe 0x490f30
xor edi, edi
push edi
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebx + 0x18]
call fcn.0048ed70
mov byte [ebp - 4], 5
mov esi, dword [eax + 4]
mov eax, dword [eax]
mov dword [ebp - 0x20], eax
cmp esi, 0x40
jae 0x4910bc
xor edx, edx
mov eax, esi
and eax, 0x3f
xor ecx, ecx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
mov eax, dword [ebp - 0x20]
cmovae ecx, edx
shr esi, 6
and edx, dword [eax + esi*8]
and ecx, dword [eax + esi*8 + 4]
or edx, ecx
je 0x491023
mov al, 1
jmp 0x491025
xor al, al
mov byte [ebp - 4], 0
lea ecx, [ebx + 0x28]
test al, al
je 0x491052
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], edi
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0048fe80
push dword [ebp - 0x1c]
mov esi, dword [ebp - 0x28]
mov ecx, ebx
call fcn.0048ff10
mov dword [esi + 0x18], eax
jmp 0x49106c
lea eax, [ebp - 0x20]
mov dword [ebp - 0x20], edi
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0048fe80
mov eax, dword [ebp - 0x18]
mov dword [eax + 0x18], 0
inc edi
cmp edi, 0x2c
jb 0x490fd2
mov byte [ebx + 0x75], 1
mov dword [ebp - 4], 6
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x4910a9
or edi, 0xffffffff
mov eax, edi
lock xadd dword [esi + 4], eax
jne 0x4910a9
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock xadd dword [esi + 8], edi
dec edi
jne 0x4910a9
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 8
push str.invalid_bitset_N__position
call fcn.004a0dba
int3