Function at 0x10020390
Capabilities:
Get common file path
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10063cc2
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x180
mov eax, dword [0x1099e494]
push ebx
push esi
push edi
xor edi, edi
mov dword [esp + 0x44], ecx
mov esi, edx
inc edi
xor ebx, ebx
mov dword [esp + 0x2c], esi
test al, 1
jne 0x100203f2
or eax, edi
mov dword [0x1099e494], eax
mov dword [esp + 0x194], ebx
call fcn.1002215e
push 0x100648b1
call fcn.1004acbb
or dword [esp + 0x198], 0xffffffff
pop ecx
mov dword [esp + 0x24], 0xab1943c6
mov dword [esp + 0x18], edi
mov dword [esp + 0x18], 0xc14ab653
mov dword [esp + 0x18], ebx
mov dword [esp + 0x18], 0xba6aed1d
mov dword [esp + 0xc], ebx
jmp 0x10020428
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x4c], 0x8c66f5a9
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x10020418
mov dword [esp + 0xc], ebx
jmp 0x10020447
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x16c], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x10020434
mov ecx, dword [esp + 0x4c]
xor edx, edx
mov eax, dword [esp + 0x24]
cmp eax, ecx
setge dl
mov dword [esp + 0x18], edx
xor edx, edx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
cmp eax, 0xfa3dfad5
mov eax, dword [esp + 0x4c]
setne dl
xor ecx, ecx
sub edx, eax
mov eax, dword [esp + 0x24]
cmp edx, eax
mov eax, 0xe6f7fbf2
setle cl
imul ecx, ecx, 0x1c94
sub ecx, 0x2717f403
neg ecx
sbb ecx, ecx
inc ecx
sub eax, ecx
xor ecx, ecx
sub eax, dword [esp + 0x24]
cmp eax, 0xfff9
mov eax, dword [esp + 0x4c]
setne cl
sub eax, ecx
neg eax
sbb eax, eax
inc eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x170], eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
imul eax, dword [esp + 0x44], 0x2710
add eax, esi
mov dword [esp + 0x98], eax
lea eax, [esp + 0x98]
push eax
call fcn.100221cb
mov eax, dword [eax]
test eax, eax
je 0x100206eb
mov dword [esp + 0x20], 0x477862f
mov dword [esp + 0x2c], 0xfffffff7
mov dword [esp + 0x2c], 0x666a
mov dword [esp + 0x118], eax
mov dword [esp + 0x20], 6
jmp 0x100206db
mov dword [esp + 0x18], 0x243f
cmp dword [esp + 0x18], 0x5fc
jge 0x100206af
lea eax, [esp + 0x48]
push eax
push 0x1000774c
call fcn.1004a93b
pop ecx
jmp 0x1002069d
dec eax
mov dword [esp + 0x48], eax
lea eax, [esp + 0x50]
push eax
push 0x1000774c
call fcn.1004a93b
pop ecx
pop ecx
push dword [esp + 0x50]
lea ecx, [esp + 0xe8]
call fcn.1000e0be
mov edi, dword [esp + 0x50]
mov dword [esp + 0x18], ebx
test edi, edi
jle 0x100205a7
mov esi, dword [esp + 0xe4]
push esi
push 0x1000774c
call fcn.1004a93b
mov edi, dword [esp + 0x58]
inc ebx
pop ecx
add esi, 4
pop ecx
cmp ebx, edi
jl 0x1002058c
xor ebx, ebx
mov dword [esp + 0x1c], ebx
mov esi, ebx
mov dword [esp + 0x10], esi
mov eax, 0x77359400
mov ecx, 0x88ca6c00
test edi, edi
jle 0x1002065a
mov edx, dword [esp + 0xe4]
add edx, 0xfffffffc
cmp dword [esp + 0x1c], 0
push 0
pop ebx
jle 0x100205ea
cmp dword [edx + 4], ebx
jge 0x100205ea
cmp dword [edx], ebx
jl 0x100205ea
cmp eax, dword [edx]
cmovge eax, dword [edx]
cmp ecx, dword [edx]
cmovle ecx, dword [edx]
mov ebx, dword [esp + 0x1c]
inc ebx
push 0
mov dword [esp + 0x1c], ebx
cmp ebx, edi
pop ebx
jge 0x10020612
cmp dword [edx + 4], ebx
jge 0x10020612
cmp dword [edx + 8], ebx
jl 0x10020612
cmp eax, dword [edx + 8]
cmovge eax, dword [edx + 8]
cmp ecx, dword [edx + 8]
cmovle ecx, dword [edx + 8]
cmp dword [esp + 0x1c], 0
jle 0x10020644
mov esi, dword [edx + 4]
test esi, esi
js 0x10020640
cmp dword [edx], 0
jl 0x10020640
sub esi, dword [edx]
jns 0x1002062b
neg esi
mov ebx, dword [esp + 0x10]
cmp esi, ebx
cmovg ebx, esi
mov esi, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x10], esi
jmp 0x10020644
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
add edx, 4
push 0
mov dword [esp + 0x20], ebx
cmp ebx, edi
pop ebx
jl 0x100205cd
add eax, ecx
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
cmp esi, ecx
push eax
cmovg ecx, esi
push ecx
push 0x10007a10
call fcn.1004ace5
mov eax, dword [esp + 0xf0]
add esp, 0xc
test eax, eax
je 0x1002069e
push eax
call fcn.1004ae57
mov dword [esp + 0xe8], ebx
mov dword [esp + 0xec], ebx
mov dword [esp + 0xf0], ebx
pop ecx
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x10020553
dec eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x18], 0xffffffff
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x100206d3
push 0xac7
push 0x23b1
push ebx
call dword [sym.imp.USER32.dll_CheckMenuItem]
dec dword [esp + 0x18]
inc dword [esp + 0x20]
cmp dword [esp + 0x20], 0x13
je 0x10020528
jmp 0x10021b54
push 2
pop esi
push esi
lea ecx, [esp + 0xf4]
call fcn.1000e0be
mov dword [esp + 0x1c], 0xf1febaee
mov dword [esp + 0x10], ebx
jmp 0x1002071b
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xf0]
mov dword [eax + ecx*4], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x10020709
mov dword [esp + 0x1c], ebx
jmp 0x10020747
mov dword [esp + 0x10], ebx
jmp 0x10020739
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x70], edi
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x1002072d
inc dword [esp + 0x70]
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jle 0x10020727
cmp dword [esp + 0xf0], 0
je 0x10020779
push dword [esp + 0xf0]
call fcn.1004ae57
pop ecx
mov dword [esp + 0xf0], ebx
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xf8], ebx
mov eax, dword [0x1099e494]
test al, 2
jne 0x10020818
or eax, esi
mov dword [0x1099e494], eax
push ebx
mov dword [esp + 0x198], edi
push ebx
mov dword [0x1099e4c0], ebx
mov dword [0x1099e4c4], ebx
call fcn.10012849
mov dword [0x1099e4c0], eax
mov dword [0x1099e4c8], ebx
mov dword [0x1099e4d0], ebx
mov byte [esp + 0x194], 3
mov ecx, 0x1099e4c8
mov dword [esp + 0x124], eax
lea eax, [esp + 0x124]
push eax
push 0x10
push ebx
lea eax, [esp + 0x6c]
mov dword [0x1099e4dc], 0x3f800000
push eax
mov dword [0x1099e4cc], ebx
call fcn.10012621
push 0x100648ac
mov dword [0x1099e4d4], 7
mov dword [0x1099e4d8], 8
call fcn.1004acbb
or dword [esp + 0x198], 0xffffffff
pop ecx
xorps xmm0, xmm0
movdqu xmmword [esp + 0x108], xmm0
mov dword [esp + 0x20], 0xea5d6c05
mov dword [esp + 0x18], 0xfffffff9
mov dword [esp + 0x28], 0xa6aed1d2
mov dword [esp + 0x34], ebx
mov dword [esp + 0x20], 0x14
jmp 0x10020967
mov dword [esp + 0x10], 0x8d3c891c
lea ecx, [esp + 0xb4]
mov dword [esp + 0x38], 0xffffffff
push edi
call fcn.1000e0be
mov dword [esp + 0xc], ebx
jmp 0x10020886
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xb4]
mov dword [eax + ecx*4], 0x17f4039e
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x10020870
mov dword [esp + 0xc], ebx
jmp 0x100208a5
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x13c], 0xfffffffb
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x10020892
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x10]
jle 0x1002092c
cmp dword [esp + 0x10], ebx
je 0x100208c4
mov eax, edi
cmp dword [esp + 0x20], ebx
jne 0x100208c6
mov eax, ebx
xor edx, edx
cmp eax, edi
mov eax, dword [esp + 0x20]
sete dl
xor ecx, ecx
cmp eax, edx
setle cl
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
sub ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov eax, dword [esp + 0x38]
mov eax, dword [esp + 0x20]
cmp eax, 0x946b
mov eax, dword [esp + 0xb4]
setl cl
mov dword [eax], ecx
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x13c]
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x13c]
mov eax, dword [esp + 0x20]
cmp dword [esp + 0xb4], 0
mov dword [esp + 0x140], 5
je 0x10020963
push dword [esp + 0xb4]
call fcn.1004ae57
pop ecx
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xb8], ebx
mov dword [esp + 0xbc], ebx
dec dword [esp + 0x20]
cmp dword [esp + 0x20], 0xfffffff1
je 0x1002084d
lea eax, [esp + 0x44]
push eax
call fcn.1002222d
push dword [esp + 0x60]
movdqa xmm0, xmmword [0x10007d00]
lea ecx, [esp + 0x58]
movdqu xmmword [esp + 0x150], xmm0
mov esi, dword [eax]
lea eax, [esp + 0x160]
push eax
lea eax, [esp + 0x154]
mov dword [esp + 0x40], esi
push eax
push ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
call fcn.100229c9
mov dword [esp + 0x194], 4
mov dword [esp + 0x10], 6
mov dword [esp + 0x24], ebx
push 3
mov dword [esp + 0x2c], ebx
pop eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ebx
cmp dword [esp + 0x10], eax
jg 0x10020aaa
mov esi, dword [esp + 0x54]
mov dword [esp + 0x34], 0xf9d78659
lea ecx, [esp + 0xfc]
mov dword [esp + 0x34], 0xfffffff8
mov dword [esp + 0x34], 0xfffffffc
mov dword [esp + 0x34], 0x7cfaf42
mov dword [esp + 0x30], 0x377cc424
push edi
call fcn.1000e0be
mov dword [esp + 0x1c], ebx
jmp 0x10020a42
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xfc]
mov dword [eax + ecx*4], 0xb5457d67
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jl 0x10020a2c
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
inc dword [esp + 0x24]
cmp dword [esp + 0xfc], 0
mov dword [esi + 4], edi
je 0x10020a97
push dword [esp + 0xfc]
call fcn.1004ae57
pop ecx
mov dword [esp + 0xfc], ebx
mov dword [esp + 0x100], ebx
mov dword [esp + 0x104], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jle 0x100209f1
mov esi, dword [esp + 0x38]
or dword [esp + 0x194], 0xffffffff
cmp dword [esp + 0x54], 0
je 0x10020acf
push dword [esp + 0x54]
call fcn.1004ae57
pop ecx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
cmp byte [ebp + 0xc], 0
jne 0x10020add
test esi, esi
jne 0x10021772
mov dword [esp + 0xc], 2
lea ecx, [esp + 0x80]
mov dword [esp + 0x10], 0x389a
or esi, 0xffffffff
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], 0xa12a2ef7
mov dword [esp + 0x20], 0x992db756
push edi
call fcn.1000e0be
mov dword [esp + 0x28], 0xaf
mov dword [esp + 0x1c], ebx
jmp 0x10020b35
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x80]
mov dword [eax + ecx*4], 9
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jl 0x10020b1f
mov eax, dword [esp + 0xc]
xor edx, edx
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, dword [esp + 0xc]
setge dl
xor ecx, ecx
sub edx, 0xe5edc59
cmp edx, eax
setl cl
xor edx, edx
imul ecx, dword [esp + 0x10]
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
sub ecx, eax
add ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, dword [esp + 0x10]
setg dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0xc]
setl cl
xor edx, edx
cmp ecx, esi
setne dl
xor ecx, ecx
cmp edx, eax
setne cl
imul ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x18], ecx
xor ecx, ecx
cmp dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
setne cl
xor edx, edx
cmp ecx, esi
setne dl
xor ecx, ecx
cmp edx, eax
mov eax, 0x5816
setge cl
sub eax, ecx
sub eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0xc]
neg eax
sbb eax, eax
inc eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x10]
jne 0x10020d3a
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], ebx
jl 0x10020e02
mov dword [esp + 0x30], 0xfffffffa
mov dword [esp + 0x28], 0xfffffff7
mov dword [esp + 0x20], ebx
cmp dword [esp + 0x20], ebx
jl 0x10020d2b
mov dword [esp + 0x3c], 0x5de082a
mov dword [esp + 0xc], 0xcc8c9f13
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x80]
cmp dword [eax + ecx*4], ebx
jne 0x10020ce1
cmp dword [esp + 0x30], ebx
je 0x10020c6e
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x80]
mov dword [eax + ecx*4], edx
mov ecx, edi
test edx, edx
jne 0x10020c70
mov ecx, ebx
inc dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
imul eax, ecx
test eax, eax
je 0x10020c87
mov edx, edi
cmp dword [esp + 0x1c], ebx
jne 0x10020c89
mov edx, ebx
mov eax, dword [esp + 0xc]
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0xc]
sete cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x24]
setne dl
xor ecx, ecx
cmp edx, eax
setg cl
xor edx, edx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x18]
cmp ecx, eax
mov eax, dword [esp + 0x28]
setl dl
xor ecx, ecx
cmp edx, eax
mov edx, ebx
setl cl
sub ecx, dword [esp + 0x20]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x28], 0xfffe
jbe 0x10020ce3
mov edx, edi
mov eax, dword [esp + 0xc]
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x18]
setg cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x10]
setne dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x1c]
setne cl
sub ecx, 0xfffffff6
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x3c], ecx
xor ecx, ecx
cmp dword [esp + 0x3c], eax
setne cl
mov dword [esp + 0xc], ecx
dec dword [esp + 0x20]
jns 0x10020c2c
dec dword [esp + 0x1c]
jns 0x10020c0e
jmp 0x10020e02
mov dword [esp + 0x1c], 8
mov dword [esp + 0x18], 0xfffffffe
mov dword [esp + 0x18], 0x5bd28040
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x1c]
sub edx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
mov eax, dword [esp + 0x10]
setle cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x24]
setge dl
xor ecx, ecx
cmp eax, edx
mov eax, dword [esp + 0x1c]
setne cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x1c]
setle dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x10]
setle cl
xor edx, edx
cmp ecx, 0xd3e44e82
setne dl
xor ecx, ecx
sub eax, edx
cmp eax, esi
setge cl
add ecx, dword [esp + 0x1c]
jne 0x10020dd4
cmp dword [esp + 0x18], ebx
jne 0x10020dd4
mov edi, ebx
xor eax, eax
neg edi
cmp edi, 0x7316a37a
setge al
xor ecx, ecx
cmp eax, 0x743e
setg cl
add ecx, 0x41e2
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
sub eax, 0x74834b2a
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x80], 0
je 0x10020e2e
push dword [esp + 0x80]
call fcn.1004ae57
pop ecx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
mov dl, byte [ebp + 0xc]
lea eax, [esp + 0x178]
mov ecx, dword [esp + 0x44]
push eax
call fcn.10015b55
mov esi, eax
lea edi, [esp + 0x10c]
pop ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [esp + 0xc], 0xffffffff
xor edi, edi
mov dword [esp + 0x28], 9
inc edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x24], ebx
jmp 0x10020e7d
mov eax, dword [esp + 0x24]
mov dword [esp + eax*4 + 0x40], 0xf1124f01
inc dword [esp + 0x24]
cmp dword [esp + 0x24], edi
jl 0x10020e6d
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10020e96
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_RegUnLoadKeyW]
mov dword [esp + 0xc], ebx
jmp 0x10020f88
mov dword [esp + 0x10], 0x54fddd3f
mov dword [esp + 0x10], ebx
cmp dword [esp + 0x10], ebx
jl 0x10020f6e
mov dword [esp + 0x1c], 0xffff
mov dword [esp + 0x18], 0x99612158
inc dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x40]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x40]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x40]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x40]
cmp dword [esp + 0x10], eax
je 0x10020f17
mov eax, edi
cmp dword [esp + 0xc], ebx
jne 0x10020f19
mov eax, ebx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x1c]
cmp eax, 0xe5de2cae
sbb eax, eax
inc eax
cmp eax, dword [esp + 0x28]
jne 0x10020f3b
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x40]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x40]
add eax, 0xffffc678
neg eax
sbb eax, eax
add eax, 0xffff957b
neg eax
sbb eax, eax
inc eax
imul eax, eax, 0xffd0
mov dword [esp + 0x1c], eax
dec dword [esp + 0x10]
jns 0x10020eb5
mov dword [esp + 0x1c], ebx
jmp 0x10020f7e
cmp dword [esp + 0x40], ebx
jne 0x10020f84
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], ebx
jle 0x10020f74
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jle 0x10020e9f
cmp byte [ebp + 0xc], 0
je 0x10021333
cmp dword [esp + 0x110], 0
je 0x10021333
mov dword [esp + 0x1c], 0xc90d2972
lea ecx, [esp + 0xa8]
push 2
mov dword [esp + 0x10], 0xffffffff
pop esi
mov dword [esp + 0x18], 0x76e5b14f
mov dword [esp + 0x10], 0x7f6cc9ca
mov dword [esp + 0x20], 0xcf041577
push esi
call fcn.1000e0be
mov dword [esp + 0x30], 8
mov dword [esp + 0x24], ebx
jmp 0x10021006
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xa8]
mov dword [eax + ecx*4], 0xe283
inc dword [esp + 0x24]
cmp dword [esp + 0x24], esi
jl 0x10020ff0
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x1002101e
push ebx
call dword [sym.imp.USER32.dll_DestroyIcon]
mov ecx, dword [esp + 0x1c]
xor edx, edx
mov eax, dword [esp + 0x1c]
cmp ecx, eax
setne dl
mov dword [esp + 0xc], edx
xor edx, edx
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
cmp eax, ecx
mov eax, dword [esp + 0x10]
setle dl
xor ecx, ecx
cmp edx, eax
setg cl
cmp dword [esp + 0x1c], 0x96e6a373
mov dword [esp + 0x28], ecx
sbb eax, eax
xor ecx, ecx
neg eax
cmp eax, dword [esp + 0x28]
setle cl
add ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x1c]
jl 0x10021076
mov eax, edi
cmp dword [esp + 0x10], ebx
jne 0x10021078
mov eax, ebx
mov ecx, 0xfff6
cmp ecx, eax
sbb eax, eax
inc eax
add eax, dword [esp + 0x10]
add eax, dword [esp + 0x18]
imul eax, dword [esp + 0x18]
mov dword [esp + 0x20], eax
cmp dword [esp + 0x20], ebx
mov byte [esp + 0x17], bl
je 0x1002119e
cmp byte [esp + 0x17], 0
je 0x100210b4
push 0xf96
push ebx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
mov dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], 0xffffffff
jl 0x100211b6
mov dword [esp + 0x18], 0xb56
mov dword [esp + 0x20], edi
cmp dword [esp + 0x20], ebx
jl 0x1002118a
mov dword [esp + 0x28], 0xf0ae
mov dword [esp + 0x10], ebx
jmp 0x10021176
mov dword [esp + 0x18], edi
mov dword [esp + 0x18], 0x5bc9807
mov dword [esp + 0xc], edi
cmp dword [esp + 0xc], ebx
jl 0x10021172
mov esi, dword [esp + 0xa8]
xor edx, edx
mov dword [esp + 0x18], 0x8821
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
cmp ecx, eax
push 7
setl dl
xor ecx, ecx
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x1c]
test eax, eax
mov edx, dword [esp + 0x24]
setg cl
sub edx, ecx
neg edx
pop eax
sbb edx, edx
xor ecx, ecx
inc edx
sub eax, edx
cmp eax, 0x2599
setne cl
xor eax, eax
cmp ecx, 0x4faf
setge al
xor ecx, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
cmp eax, dword [esi + 4]
setle cl
mov dword [esp + 0x30], ecx
cmp dword [esp + 0x18], ebx
jne 0x10021172
dec dword [esp + 0xc]
jns 0x10021107
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jle 0x100210ea
dec dword [esp + 0x20]
jns 0x100210d9
dec dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0xffffffff
jge 0x100210c3
push 2
pop esi
jmp 0x100211b6
cmp byte [esp + 0x17], 0
je 0x100211b6
push ebx
push 0x865
push 0x1972
call dword [sym.imp.GDI32.dll_CreatePen]
cmp dword [esp + 0xa8], 0
je 0x100211e2
push dword [esp + 0xa8]
call fcn.1004ae57
pop ecx
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb0], ebx
mov eax, dword [esp + 0x114]
lea ecx, [esp + 0x64]
push esi
mov dword [esp + 0x120], eax
call fcn.1000e0be
mov dword [esp + 0x10], 0xc184c506
mov dword [esp + 0x28], 0xfffffffb
mov dword [esp + 0x20], ebx
jmp 0x10021223
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x64]
mov dword [eax + ecx*4], 0x5b57
inc dword [esp + 0x20]
cmp dword [esp + 0x20], esi
jl 0x10021210
mov dword [esp + 0x20], ebx
jmp 0x10021242
mov eax, dword [esp + 0x20]
mov dword [esp + eax*4 + 0x12c], 0x1465ee6
inc dword [esp + 0x20]
cmp dword [esp + 0x20], esi
jl 0x1002122f
mov dword [esp + 0x10], edi
cmp dword [esp + 0x10], ebx
jl 0x10021308
mov dword [esp + 0x1c], 6
mov dword [esp + 0x28], ebx
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x1c], ebx
jl 0x100212fe
mov dword [esp + 0x18], 0xa4e86524
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x1002128a
push ebx
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x64]
mov eax, dword [eax + ecx*4]
mov dword [edx + esi*4], eax
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x12c], 0xffffffff
jb 0x100212da
mov eax, ebx
cmp dword [esp + 0x18], ebx
je 0x100212dc
mov eax, edi
imul ecx, eax, 0x76b5
xor edx, edx
mov eax, dword [esp + 0x1c]
cmp ecx, eax
setg dl
mov dword [esp + 0x130], edx
dec dword [esp + 0x1c]
jns 0x10021270
dec dword [esp + 0x10]
jns 0x10021256
cmp dword [esp + 0x64], 0
je 0x10021325
push dword [esp + 0x64]
call fcn.1004ae57
pop ecx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov eax, dword [esp + 0x110]
mov dword [esp + 0x120], eax
cmp dword [esp + 0x38], 0
jne 0x10021772
cmp dword [esp + 0x108], 0
jle 0x10021772
push 2
pop esi
mov dword [esp + 0x10], esi
mov dword [esp + 0x34], 0x5a8b060d
mov dword [esp + 0x10], ebx
jmp 0x100213a6
mov dword [esp + 0x28], 0xc418
xor ecx, ecx
mov dword [esp + 0x18], 0x51cf
mov dword [esp + 0x30], 5
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
cmp eax, edi
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
setg cl
sub edx, ecx
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
setl cl
mov dword [esp + 0x30], ecx
dec dword [esp + 0x10]
cmp dword [esp + 0x10], 0xffffffe6
jg 0x10021361
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x100213cd
push 0x23b1
push 0x1b70
push 0x1be7
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov dword [esp + 0xc], ebx
lea ecx, [esp + 0xd8]
push esi
call fcn.1000e0be
push 3
lea ecx, [esp + 0xc4]
mov dword [esp + 0x198], 5
call fcn.1000e0be
mov dword [esp + 0xc], ebx
jmp 0x1002140f
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xd8]
mov dword [eax + ecx*4], edi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x100213fd
mov dword [esp + 0xc], ebx
jmp 0x1002142e
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x128], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x1002141b
mov dword [esp + 0xc], ebx
jmp 0x10021450
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc0]
mov dword [eax + ecx*4], 0xfffffff6
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x1002143a
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10021478
push ebx
push 0x8b4
push 0x1fb3
push 0x50f
call dword [sym.imp.GDI32.dll_SetViewportOrgEx]
mov dword [esp + 0xc], ebx
cmp dword [esp + 0xc], 0xfffffffa
jge 0x10021555
mov esi, dword [esp + 0xd8]
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x10], 0xc9d5fac1
xor edx, edx
mov dword [esp + 0x28], 0xffffffff
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
cmp ecx, eax
mov eax, dword [esp + 0xc]
setl dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0xc]
setl cl
mov dword [esp + 0x18], ecx
xor ecx, ecx
cmp dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
setg cl
mov dword [esi + 4], ecx
xor edx, edx
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, dword [esp + 0x10]
setl dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0xc]
setg cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x28]
setge dl
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [esp + 0x128], ecx
mov dword [esp + 0x18], ecx
xor ecx, ecx
cmp dword [esp + 0x18], 0x687f
sete cl
xor eax, eax
cmp ecx, 0xbac0
setg al
mov dword [ebx + 4], eax
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0xfffffffa
jl 0x10021495
push 2
xor ebx, ebx
pop esi
cmp dword [esp + 0xc0], 0
je 0x10021581
push dword [esp + 0xc0]
call fcn.1004ae57
pop ecx
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xc8], ebx
or dword [esp + 0x194], 0xffffffff
cmp dword [esp + 0xd8], 0
je 0x100215b5
push dword [esp + 0xd8]
call fcn.1004ae57
pop ecx
mov dword [esp + 0xd8], ebx
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xe0], ebx
cmp dword [esp + 0x10c], 0
je 0x10021772
push esi
lea ecx, [esp + 0xd0]
call fcn.1000e0be
mov dword [esp + 0x194], 6
lea eax, [esp + 0x16c]
push dword [esp + 0x60]
movdqa xmm0, xmmword [0x10007cf0]
lea ecx, [esp + 0x78]
push eax
mov dword [esp + 0x3c], 0x2887cf2e
lea eax, [esp + 0x164]
mov dword [esp + 0x44], ebx
push eax
mov dword [esp + 0x40], 0xffffffff
mov dword [esp + 0x40], 0xfffffffd
mov dword [esp + 0x3c], 0xf5872d9e
push ebx
movdqu xmmword [esp + 0x16c], xmm0
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], ebx
call fcn.100229c9
mov dword [esp + 0x18], 0xffffffff
mov dword [esp + 0x28], 0x3d1aa12a
mov dword [esp + 0x18], 0x23703ac
mov dword [esp + 0x38], 0x2c78
mov dword [esp + 0x24], ebx
jmp 0x1002167f
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xcc]
mov dword [eax + ecx*4], 7
inc dword [esp + 0x24]
cmp dword [esp + 0x24], esi
jl 0x10021669
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10021698
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetCommState]
mov eax, dword [esp + 0xcc]
cmp dword [eax], ebx
je 0x100216ff
cmp dword [esp + 0x18], ebx
jne 0x100216f1
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0xcc]
imul ecx, dword [eax]
test ecx, ecx
je 0x100216c9
cmp dword [esp + 0x18], ebx
je 0x100216c9
mov ecx, edi
cmp dword [esp + 0x30], ebx
jne 0x100216cb
mov ecx, ebx
mov eax, dword [esp + 0x30]
xor edx, edx
cmp ecx, eax
setg dl
xor ecx, ecx
add edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
neg eax
cmp eax, edx
mov eax, ebx
setge cl
cmp ecx, 0xffff
jne 0x100216f3
mov eax, edi
inc dword [esp + 0x28]
cmp dword [esp + 0x28], eax
mov eax, edi
jg 0x10021701
mov eax, ebx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x74], 0
mov dword [esp + 0x30], eax
je 0x1002172a
push dword [esp + 0x74]
call fcn.1004ae57
pop ecx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
or dword [esp + 0x194], 0xffffffff
push dword [esp + 0xcc]
call fcn.1004ae57
pop ecx
mov ecx, dword [esp + 0x10c]
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xd4], ebx
call fcn.10020364
mov esi, eax
lea eax, [esp + 0x44]
push eax
mov dword [esp + 0x3c], esi
call fcn.1002222d
mov dword [eax], esi
mov dword [esp + 0xc], 0x6db5
lea ecx, [esp + 0x9c]
mov dword [esp + 0x1c], 0x971867b8
mov dword [esp + 0x20], edi
push 3
call fcn.1000e0be
push 7
pop edx
mov dword [esp + 0x194], edx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x24], ebx
jmp 0x100217ba
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x9c]
mov dword [eax + ecx*4], edx
inc dword [esp + 0x24]
cmp dword [esp + 0x24], 3
jl 0x100217a8
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], ebx
je 0x100217f0
mov eax, dword [esp + 0xc]
xor edx, edx
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, edi
setle dl
cmp edx, 0x30cc2fdc
jl 0x100217f2
mov eax, ebx
mov ecx, dword [esp + 0xc]
xor edx, edx
imul ecx, eax
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, dword [esp + 0xc]
setl dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0xc]
setle cl
cmp ecx, edi
sbb ecx, ecx
neg ecx
sub eax, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0xc], 3
cmp dword [esp + 0xc], 0x12
jne 0x10021a06
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x18], 0xdb39523d
lea ecx, [esp + 0x8c]
push 2
call fcn.1000e0be
mov dword [esp + 0x3c], 0x7c9a
mov dword [esp + 0x28], 0x709c591e
push 2
mov dword [esp + 0x2c], 0xa4961f08
mov dword [esp + 0x28], ebx
pop edx
jmp 0x10021886
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x8c]
mov dword [eax + ecx*4], 0xfffffffd
inc dword [esp + 0x24]
cmp dword [esp + 0x24], edx
jl 0x10021870
mov dword [esp + 0x20], ebx
jmp 0x10021954
mov dword [esp + 0x30], 0x9bdd
mov dword [esp + 0x1c], edx
cmp dword [esp + 0x1c], ebx
jl 0x10021950
mov dword [esp + 0x10], 0x42f3d479
mov dword [esp + 0x10], edx
cmp dword [esp + 0x10], ebx
jl 0x1002192b
mov dword [esp + 0x28], ebx
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x100218d3
push ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
cmp dword [esp + 0x18], ebx
je 0x1002190e
mov eax, dword [esp + 0x8c]
xor edx, edx
cmp dword [eax + 4], 7
mov eax, dword [esp + 0x28]
sete dl
xor ecx, ecx
cmp edx, eax
setne cl
sub ecx, dword [esp + 0x30]
je 0x100218fe
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov eax, edi
jmp 0x10021910
mov eax, ebx
mov edx, dword [esp + 0x10]
xor ecx, ecx
cmp eax, edi
mov eax, dword [esp + 0x9c]
sete cl
mov dword [eax + edx*4], ecx
dec dword [esp + 0x10]
jns 0x100218bd
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10021943
push 0x2682
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
dec dword [esp + 0x1c]
push 2
pop edx
jns 0x100218ab
inc dword [esp + 0x20]
cmp dword [esp + 0x20], edx
jle 0x10021895
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jg 0x1002196c
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x20], 0xfffffffa
mov eax, dword [esp + 0x8c]
sbb ecx, ecx
xor edx, edx
neg ecx
cmp ecx, dword [eax]
setne dl
mov dword [esp + 0x28], edx
xor edx, edx
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0xc]
cmp ecx, eax
setne dl
cmp edx, dword [esp + 0xc]
jle 0x100219ae
mov eax, dword [esp + 0x8c]
cmp dword [eax + 4], ebx
mov eax, edi
jne 0x100219b0
mov eax, ebx
cmp eax, dword [esp + 0x20]
jle 0x100219ba
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x3c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
sub eax, dword [esi + 4]
push dword [esp + 0x8c]
mov dword [esp + 0x2c], eax
call fcn.1004ae57
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 0x12
pop ecx
je 0x10021839
or dword [esp + 0x194], 0xffffffff
cmp dword [esp + 0x9c], 0
je 0x10021a3a
push dword [esp + 0x9c]
call fcn.1004ae57
pop ecx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xa4], ebx
lea ecx, [esp + 0x108]
call fcn.1001c77a
mov eax, dword [esp + 0x38]
test eax, eax
je 0x10021b54
mov edx, dword [esp + 0x2c]
mov ecx, eax
call fcn.10020386
mov dword [esp + 0x2c], 0xe324
mov esi, eax
push 8
pop eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x2c], 0xcb363f9e
mov dword [esp + 0x2c], 0xf147909b
mov dword [esp + 0x2c], 0xbc781ced
mov dword [esp + 0x2c], 0xba1a4d63
mov dword [esp + 0x2c], 0xf680299
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x2c], 5
mov dword [esp + 0x2c], 0x5196ee4e
mov dword [esp + 0x2c], 0xb2c57e71
mov dword [esp + 0x2c], 0xb441a62a
mov dword [esp + 0x34], 0xfffffff6
mov dword [esp + 0x18], 0xfffffffe
mov dword [esp + 0x18], ebx
mov dword [esp + 0x18], 0x840eb449
mov dword [esp + 0x18], 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x18], 0x2294
mov dword [esp + 0x28], 0x193208af
mov dword [esp + 0x118], esi
mov dword [esp + 0x24], ebx
jmp 0x10021b16
mov eax, dword [esp + 0x24]
mov dword [esp + eax*4 + 0x134], ebx
inc dword [esp + 0x24]
cmp dword [esp + 0x24], 2
jl 0x10021b07
inc dword [esp + 0x18]
je 0x10021b29
cmp dword [esp + 0x2c], ebx
jne 0x10021b2b
mov edi, ebx
mov eax, dword [esp + 0x34]
xor ecx, ecx
cmp edi, eax
setge cl
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x134], eax
lea eax, [esp + 0x98]
push eax
call fcn.100221cb
mov dword [eax], esi
mov eax, dword [ebp + 8]
lea esi, [esp + 0x118]
mov ecx, dword [esp + 0x18c]
mov edi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret