Function at 0x617798
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffff1c
mov esi, edx
xor edx, edx
xor edi, edi
mov dword [esp + 4], ecx
mov dword [esp], eax
mov eax, dword [esi]
xor ecx, ecx
mov dword [esp + 8], eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edi
mov eax, dword [esp + 8]
mov ebp, dword [eax]
mov eax, dword [ebp]
mov dword [esp + 0x38], eax
mov byte [esp + 0x3c], 0
mov edx, dword [esp + 0x38]
cmp byte [edx + 0x57], 0
je 0x6177f4
jmp 0x6184c0
mov edi, dword [esp + 4]
mov eax, dword [esp + 8]
shl edi, 4
add eax, 0x1f0
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
xor edx, edx
mov ebx, dword [edi]
mov dword [eax], edx
mov eax, dword [esp + 0xc]
mov edx, dword [ebx + 0xc]
call fcn.00618858
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
xor ecx, ecx
mov cl, byte [ebx]
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x34], 0x31
jne 0x617890
mov edx, ebx
mov eax, ebp
call fcn.0061e254
test eax, eax
jne 0x6184c0
test byte [ebx + 5], 0x10
je 0x617866
mov edx, dword [ebx + 0x14]
mov eax, dword [esp + 0xc]
call fcn.00617570
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
jmp 0x617878
mov edx, dword [ebx + 0x14]
mov eax, dword [esp + 0xc]
call fcn.00618874
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x24]
or eax, dword [esp + 0x10]
or edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edx
jmp 0x6178e2
mov edx, dword [ebx + 0x10]
mov eax, dword [esp + 0xc]
call fcn.00618858
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
cmp dword [ebx + 0xc], 0
je 0x6178b7
test dword [ebx + 4], 0x41000
jne 0x6178b7
cmp dword [ebx + 0x14], 0
je 0x6178cc
mov edx, ebx
mov eax, dword [esp + 0xc]
call fcn.00618828
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edx
jmp 0x6178e2
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x24]
or eax, dword [esp + 0x10]
or edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0xc]
cmp dword [ecx], 0
je 0x6178f1
or word [edi + 0xa], 0x1000
test byte [ebx + 4], 3
je 0x6179ac
mov edx, dword [ebx + 0x24]
mov eax, dword [esp + 0xc]
call fcn.0060be08
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], edx
test byte [ebx + 4], 1
je 0x61796a
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
or dword [esp + 0x18], eax
or dword [esp + 0x1c], edx
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
sub eax, 1
sbb edx, 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
shrd eax, edx, 1
shr edx, 1
cmp edx, dword [esp + 0x48]
jne 0x617953
cmp eax, dword [esp + 0x44]
jb 0x6179ac
push str.ON_clause_references_tables_to_its_right
push ebp
call fcn.00643f68
add esp, 8
jmp 0x6184c0
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
shrd eax, edx, 1
shr edx, 1
cmp edx, dword [esp + 0x48]
jne 0x617982
cmp eax, dword [esp + 0x44]
jb 0x6179ac
mov ecx, dword [esp]
cmp dword [ecx], 0
jle 0x6179a8
mov ecx, dword [esp]
test byte [ecx + 0x2c], 0x40
je 0x6179a8
push str.ON_clause_references_tables_to_its_right
push ebp
call fcn.00643f68
add esp, 8
jmp 0x6184c0
and dword [ebx + 4], 0xfffffffd
mov eax, dword [esp + 0x18]
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x2c], eax
mov dword [edi + 0x14], 0xffffffff
mov dword [edi + 0x10], 0xffffffff
mov word [edi + 0xc], 0
mov eax, dword [esp + 0x34]
call fcn.00616884
test eax, eax
je 0x617c45
mov eax, dword [ebx + 0xc]
call fcn.0061b22c
mov dword [esp + 0x54], eax
mov eax, dword [ebx + 0x10]
call fcn.0061b22c
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x24]
and eax, dword [esp + 0x10]
and edx, dword [esp + 0x14]
cmp edx, 0
jne 0x617a15
cmp eax, 0
jne 0x617a15
mov cx, 0x3fff
jmp 0x617a19
mov cx, 0x800
mov word [esp + 0x5c], cx
cmp dword [edi + 0x1c], 0
jle 0x617a39
mov edx, dword [esp + 0x54]
mov eax, dword [edi + 0x1c]
shl eax, 4
mov edx, dword [edx + 0x14]
mov eax, dword [edx + eax - 8]
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x34]
push ecx
lea edx, [esp + 0x50]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 4]
call fcn.00617710
test eax, eax
je 0x617a73
mov ecx, dword [esp + 0x4c]
mov dword [edi + 0x14], ecx
mov eax, dword [esp + 0x50]
mov dword [edi + 0x18], eax
mov eax, dword [esp + 0x34]
call fcn.00616918
and ax, word [esp + 0x5c]
mov word [edi + 0xc], ax
cmp dword [esp + 0x34], 0x2d
jne 0x617a80
or word [edi + 0xa], 0x800
cmp dword [esp + 0x58], 0
je 0x617bf5
mov edx, dword [esp + 0x34]
push edx
lea edx, [esp + 0x50]
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 4]
call fcn.00617710
test eax, eax
je 0x617bf5
mov ecx, dword [esp + 0x58]
test byte [ecx + 4], 0x20
jne 0x617bf5
mov word [esp + 0x68], 0
cmp dword [edi + 0x14], 0
jl 0x617b74
xor ecx, ecx
mov edx, ebx
mov eax, dword [esp + 0x38]
call fcn.0061c6e0
mov dword [esp + 0x64], eax
mov ecx, dword [esp + 0x38]
cmp byte [ecx + 0x57], 0
je 0x617af5
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x38]
call fcn.0061c21c
jmp 0x6184c0
mov cx, 3
mov edx, dword [esp + 0x64]
mov eax, esi
call fcn.0061679c
mov dword [esp + 0x6c], eax
cmp dword [esp + 0x6c], 0
je 0x6184c0
mov ecx, dword [esp + 0x6c]
shl ecx, 4
lea ecx, [ecx + ecx*2]
add ecx, dword [esi + 0x18]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x6c]
mov eax, esi
call fcn.00616e20
cmp dword [esp + 0x34], 0x2d
jne 0x617b44
mov ecx, dword [esp + 0x60]
or word [ecx + 0xa], 0x800
mov edi, dword [esp + 4]
mov eax, ebp
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 8
mov edx, dword [esp + 0x64]
call fcn.006174f4
test eax, eax
je 0x617b7c
or word [edi + 0xc], 0x800
mov word [esp + 0x68], 0x800
jmp 0x617b7c
mov dword [esp + 0x64], ebx
mov dword [esp + 0x60], edi
mov edx, dword [esp + 0x64]
mov eax, ebp
call fcn.006168a8
mov ecx, dword [esp + 0x60]
or word [ecx + 0xa], ax
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x4c]
mov dword [ecx + 0x14], eax
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x50]
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
or eax, dword [esp + 0x20]
or edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x60]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], edx
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x18]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0x2c], eax
mov edx, dword [esp + 0x64]
xor eax, eax
mov al, byte [edx]
call fcn.00616918
add ax, word [esp + 0x68]
and ax, word [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov word [edx + 0xc], ax
jmp 0x61811f
cmp dword [esp + 0x34], 0x32
jne 0x61811f
test byte [ebx + 4], 1
jne 0x61811f
mov eax, dword [esp + 0x54]
call fcn.0061d35c
test eax, eax
jne 0x61811f
mov byte [ebx], 0xaa
mov dword [ebx + 8], 0x67b876
or dword [ebx + 4], 0x20000000
mov dword [edi + 0x28], 0
mov dword [edi + 0x2c], 0
mov word [edi + 0xc], 0
jmp 0x61811f
xor edx, edx
mov dl, byte [ebx]
cmp edx, 0x30
jne 0x617d15
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x617d15
mov ecx, dword [ebx + 0x14]
xor eax, eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0xe0], str.97match
mov edx, dword [esp + 0x74]
shl edx, 4
mov eax, dword [esp + 0x70]
mov edx, dword [eax + edx + 8]
xor ecx, ecx
mov eax, dword [esp + 0x38]
call fcn.0061c6e0
push eax
xor ecx, ecx
mov edx, dword [ebx + 0xc]
mov eax, dword [esp + 0x3c]
call fcn.0061c6e0
mov ecx, eax
mov edx, dword [esp + 0xe4]
movzx edx, byte [edx]
mov eax, ebp
call fcn.0061bca8
mov edi, eax
mov edx, ebx
mov eax, edi
call fcn.00616e04
mov cx, 3
mov edx, edi
mov eax, esi
call fcn.0061679c
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x78]
mov edx, esi
mov eax, dword [esp]
call fcn.00617798
mov edi, dword [esp + 4]
mov ecx, dword [esp + 4]
shl edi, 4
mov edx, dword [esp + 0x78]
mov eax, esi
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
call fcn.00616e20
inc dword [esp + 0x74]
inc dword [esp + 0xe0]
cmp dword [esp + 0x74], 2
jl 0x617c78
jmp 0x61811f
xor ecx, ecx
mov cl, byte [ebx]
cmp ecx, 0x2b
jne 0x617d3e
mov ecx, dword [esp + 4]
mov edx, esi
mov eax, dword [esp]
call fcn.00616f84
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
jmp 0x61811f
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x33
jne 0x617e79
mov edx, dword [ebx + 0xc]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0xa7
jne 0x61811f
mov ecx, dword [ebx + 0xc]
cmp word [ecx + 0x20], 0
jl 0x61811f
test byte [ebx + 4], 1
jne 0x61811f
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x80], eax
push 0
xor ecx, ecx
mov edx, 0x79
mov eax, dword [esp + 0x3c]
call fcn.0061bb28
push eax
xor ecx, ecx
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x3c]
call fcn.0061c6e0
mov ecx, eax
mov edx, 0x36
mov eax, ebp
call fcn.0061bca8
mov dword [esp + 0x7c], eax
mov cx, 0x83
mov edx, dword [esp + 0x7c]
mov eax, esi
call fcn.0061679c
mov dword [esp + 0x84], eax
cmp dword [esp + 0x84], 0
je 0x61811f
mov ecx, dword [esp + 0x84]
shl ecx, 4
lea ecx, [ecx + ecx*2]
add ecx, dword [esi + 0x18]
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0x88]
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
mov ecx, dword [edx + 0x1c]
mov dword [eax + 0x14], ecx
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
movsx ecx, word [edx + 0x20]
mov dword [eax + 0x18], ecx
mov eax, esi
mov edx, dword [esp + 0x88]
mov word [edx + 0xc], 4
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 4]
call fcn.00616e20
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 8
mov eax, dword [esp + 0x88]
mov edx, dword [edi + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [edi + 0x2c]
mov dword [eax + 0x2c], edx
jmp 0x61811f
xor ecx, ecx
mov cl, byte [ebx]
cmp ecx, 0xac
jne 0x61811f
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x61811f
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x34]
push edx
lea ecx, [esp + 0x30]
mov edx, ebx
mov eax, ebp
call fcn.00616948
test eax, eax
je 0x61811f
mov word [esp + 0xa8], 0x103
mov ecx, dword [ebx + 0x14]
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x8c], eax
xor ecx, ecx
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
call fcn.0061c6e0
mov dword [esp + 0x90], eax
cmp dword [esp + 0x30], 0
je 0x617f45
mov ecx, dword [ebp]
cmp byte [ecx + 0x57], 0
jne 0x617f45
or word [edi + 0xa], 0x400
xor eax, eax
jmp 0x617f37
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 8]
add ecx, eax
push ecx
xor ecx, ecx
mov cl, dl
pop edi
mov cl, byte [ecx + 0x67e936]
and cl, 0x20
not cl
and cl, dl
and edx, 0xff
mov byte [edi], cl
mov ecx, dword [esp + 0x90]
mov ecx, dword [ecx + 8]
lea edi, [ecx + eax]
mov cl, byte [edx + 0x67e824]
mov byte [edi], cl
inc eax
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + 8]
mov dl, byte [ecx + eax]
test dl, dl
jne 0x617efd
mov eax, dword [esp + 0x38]
cmp byte [eax + 0x57], 0
jne 0x617fc2
mov ecx, dword [esp + 0x90]
mov eax, dword [ecx + 8]
call fcn.00643db4
mov edx, dword [esp + 0x90]
add eax, dword [edx + 8]
dec eax
mov dword [esp + 0xac], eax
mov ecx, dword [esp + 0xac]
mov al, byte [ecx]
mov byte [esp + 0xaa], al
cmp dword [esp + 0x30], 0
je 0x617fb1
xor edx, edx
mov dl, byte [esp + 0xaa]
cmp edx, 0x40
jne 0x617f9b
xor ecx, ecx
mov dword [esp + 0x2c], ecx
xor eax, eax
mov al, byte [esp + 0xaa]
mov dl, byte [eax + 0x67e824]
mov byte [esp + 0xaa], dl
mov eax, dword [esp + 0xac]
mov cl, byte [esp + 0xaa]
inc ecx
mov byte [eax], cl
cmp dword [esp + 0x30], 0
je 0x617fd0
mov edx, str.NOCASE
jmp 0x617fd5
mov edx, str.BINARY
mov dword [esp + 0xa4], edx
xor ecx, ecx
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x38]
call fcn.0061c6e0
mov dword [esp + 0x94], eax
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0x98]
mov eax, ebp
call fcn.0061b204
mov ecx, eax
mov edx, 0x39
mov eax, ebp
call fcn.0061bca8
mov dword [esp + 0x94], eax
mov edx, ebx
mov eax, dword [esp + 0x94]
call fcn.00616e04
mov cx, word [esp + 0xa8]
mov edx, dword [esp + 0x94]
mov eax, esi
call fcn.0061679c
mov dword [esp + 0x9c], eax
xor ecx, ecx
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x38]
call fcn.0061c6e0
mov dword [esp + 0x98], eax
mov ecx, dword [esp + 0x90]
push ecx
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0x9c]
mov eax, ebp
call fcn.0061b204
mov ecx, eax
mov edx, 0x38
mov eax, ebp
call fcn.0061bca8
mov dword [esp + 0x98], eax
mov edx, ebx
mov eax, dword [esp + 0x98]
call fcn.00616e04
mov cx, word [esp + 0xa8]
mov edx, dword [esp + 0x98]
mov eax, esi
call fcn.0061679c
mov dword [esp + 0xa0], eax
mov ecx, dword [esp + 0x9c]
mov edx, esi
mov eax, dword [esp]
call fcn.00617798
mov ecx, dword [esp + 0xa0]
mov edx, esi
mov eax, dword [esp]
call fcn.00617798
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
cmp dword [esp + 0x2c], 0
je 0x61811f
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x9c]
mov eax, esi
call fcn.00616e20
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xa0]
mov eax, esi
call fcn.00616e20
xor ecx, ecx
mov cl, byte [ebx]
cmp ecx, 0x35
je 0x618135
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x2d
jne 0x618219
mov eax, dword [ebx + 0xc]
call fcn.0061b5c8
mov dword [esp + 0x40], eax
dec eax
jle 0x618219
mov eax, dword [ebx + 0x10]
call fcn.0061b5c8
cmp eax, dword [esp + 0x40]
jne 0x618219
mov edx, dword [ebx + 0xc]
test byte [edx + 5], 0x10
je 0x618170
mov ecx, dword [ebx + 0x10]
test byte [ecx + 5], 0x10
jne 0x618219
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x618219
xor edi, edi
cmp edi, dword [esp + 0x40]
jge 0x6181fc
mov eax, dword [esp + 0x40]
mov ecx, edi
push eax
mov eax, ebp
mov edx, dword [ebx + 0xc]
call fcn.0061b654
mov dword [esp + 0xb4], eax
mov eax, ebp
mov edx, dword [esp + 0x40]
mov ecx, edi
push edx
mov edx, dword [ebx + 0x10]
call fcn.0061b654
push eax
xor edx, edx
mov dl, byte [ebx]
mov ecx, dword [esp + 0xb8]
mov eax, ebp
call fcn.0061bca8
mov dword [esp + 0xb0], eax
mov edx, ebx
mov eax, dword [esp + 0xb0]
call fcn.00616e04
mov cx, 0x8001
mov edx, dword [esp + 0xb0]
mov eax, esi
call fcn.0061679c
mov ecx, eax
mov edx, esi
mov eax, dword [esp]
call fcn.00617798
inc edi
cmp edi, dword [esp + 0x40]
jl 0x618186
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 6
mov word [edi + 0xc], 0x2000
jmp 0x6184a5
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x31
jne 0x6182b9
cmp dword [edi + 0x1c], 0
jne 0x6182b9
mov edx, dword [ebx + 0xc]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0xb1
jne 0x6182b9
test byte [ebx + 5], 0x10
je 0x6182b9
mov ecx, dword [ebx + 0x14]
cmp dword [ecx + 0x34], 0
je 0x618257
mov eax, dword [ebx + 0x14]
test byte [eax + 5], 2
je 0x6182b9
mov edx, dword [ebx + 0x14]
cmp dword [edx + 0x44], 0
jne 0x6182b9
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x6182b9
xor ebp, ebp
jmp 0x6182a8
mov cx, 0x8002
mov edx, ebx
mov eax, esi
call fcn.0061679c
mov edi, eax
mov eax, edi
add eax, eax
lea eax, [eax + eax*2]
mov edx, dword [esi + 0x18]
lea ecx, [ebp + 1]
mov dword [edx + eax*8 + 0x1c], ecx
mov ecx, edi
mov edx, esi
mov eax, dword [esp]
call fcn.00617798
mov ecx, dword [esp + 4]
mov edx, edi
mov eax, esi
call fcn.00616e20
inc ebp
mov eax, dword [ebx + 0xc]
call fcn.0061b5c8
cmp ebp, eax
jl 0x61826e
jmp 0x6184a5
xor edx, edx
mov dl, byte [esi + 8]
cmp edx, 0x2c
jne 0x6184a5
xor ecx, ecx
mov dword [esp + 0xb8], ecx
xor ecx, ecx
mov dword [esp + 0xbc], ecx
lea eax, [esp + 0xbc]
push eax
lea edx, [esp + 0xbc]
push edx
lea ecx, [esp + 0x44]
mov edx, ebx
mov eax, dword [esp + 0x40]
call fcn.00616c40
mov dword [esp + 0xc0], eax
jmp 0x61848e
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xc]
call fcn.00618858
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], edx
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc]
call fcn.00618858
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd4]
mov edx, dword [esp + 0xd8]
and eax, dword [esp + 0xcc]
and edx, dword [esp + 0xd0]
cmp edx, 0
jne 0x618464
cmp eax, 0
jne 0x618464
xor ecx, ecx
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0x38]
call fcn.0061c6e0
push eax
xor ecx, ecx
mov edx, 0x2e
mov eax, ebp
call fcn.0061bca8
test byte [ebx + 4], 1
je 0x6183a3
test eax, eax
je 0x6183a3
or dword [eax + 4], 1
mov ecx, dword [ebx + 0x24]
mov dword [eax + 0x24], ecx
mov cx, 3
mov edx, eax
mov eax, esi
call fcn.0061679c
mov dword [esp + 0xc4], eax
mov ecx, dword [esp + 0xc4]
shl ecx, 4
lea ecx, [ecx + ecx*2]
add ecx, dword [esi + 0x18]
mov dword [esp + 0xc8], ecx
mov eax, dword [esp + 0xc8]
mov edx, dword [esp + 0xd4]
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0xd8]
mov dword [eax + 0x24], edx
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xc8]
mov eax, dword [ecx + 0x1c]
mov dword [edx + 0x14], eax
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xc8]
movsx eax, word [ecx + 0x20]
mov dword [edx + 0x18], eax
mov ecx, dword [esp + 0xc8]
mov word [ecx + 0xc], pe_nt_image_headers32
mov eax, dword [esp + 0xc8]
mov dl, byte [esp + 0x3c]
mov byte [eax + 0xf], dl
mov eax, esi
mov edx, dword [esp + 0xc4]
mov ecx, dword [esp + 4]
call fcn.00616e20
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 8
mov eax, dword [esp + 0xc8]
mov edx, dword [edi + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [edi + 0x2c]
mov dword [eax + 0x2c], edx
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0xdc], ecx
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0xbc], ecx
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xb8], eax
mov edx, dword [esp + 0xc0]
add dword [esp + 0xc0], 0xffffffff
test edx, edx
jg 0x618304
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
or dword [edi + 0x20], eax
or dword [edi + 0x24], edx
add esp, 0xe4
pop ebp
pop edi
pop esi
pop ebx
ret