Function at 0x106e890
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
sub esp, 8
push ebp
push esi
push edi
mov edi, dword [esp + 0x1c]
test eax, eax
mov eax, dword [esp + 0x18]
je 0x106e8c5
mov esi, dword [eax + 0x68]
cmp esi, 8
jae 0x106e8c5
mov dl, byte [edi]
mov byte [esi + eax + 0x60], dl
inc dword [eax + 0x68]
mov esi, dword [ecx]
inc edi
dec esi
mov edx, esi
test edx, edx
mov dword [ecx], esi
jne 0x106e8a8
cmp dword [eax + 0x68], 8
jb 0x106f2fc
mov ecx, dword [ecx]
mov edx, dword [eax + 0x78]
mov esi, dword [eax + 0x7c]
shr ecx, 3
mov dword [esp + 0x18], ecx
push ebx
xor edx, dword [eax + 0x60]
mov ebx, dword [eax + 0x64]
xor ebx, esi
mov ecx, edx
shr ecx, 8
mov esi, edx
shl edx, 8
shl esi, 8
xor ecx, esi
and ecx, 0xff00ff
xor ecx, edx
mov esi, ecx
shl ecx, 0x10
mov edx, ebx
shl edx, 8
shr esi, 0x10
or esi, ecx
mov ecx, ebx
shr ecx, 8
xor ecx, edx
and ecx, 0xff00ff
shl ebx, 8
xor ecx, ebx
mov ebx, dword [eax + 4]
mov ebp, ecx
shl ecx, 0x10
shr ebp, 0x10
or ebp, ecx
mov ecx, dword [eax]
lea edx, [ecx + ebp]
mov ecx, 0x20
sub ecx, ebx
mov ebx, edx
shr ebx, cl
mov ecx, dword [eax + 4]
shl edx, cl
or ebx, edx
movzx edx, bh
mov edx, dword [edx*4 + 0x10136e8]
mov ecx, ebx
and ecx, 0xff
xor edx, dword [ecx*4 + 0x1013ae8]
mov ecx, ebx
shr ecx, 0x10
movzx ecx, cl
add edx, dword [ecx*4 + 0x10142e8]
mov dword [esp + 0x20], ebx
shr ebx, 0x18
mov ecx, dword [ebx*4 + 0x1013ee8]
mov ebx, dword [eax + 8]
sub edx, ecx
xor esi, edx
mov edx, dword [eax + 0xc]
xor ebx, esi
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0xc]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
mov dword [esp + 0x20], edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
add ecx, ebx
shr edx, 0x10
movzx edx, dl
xor ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x14]
mov ebx, dword [eax + 0x10]
xor ebp, ecx
sub ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x14]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
xor ecx, ebx
shr edx, 0x10
movzx edx, dl
sub ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x1c]
xor esi, ecx
mov ecx, dword [eax + 0x18]
lea ebx, [ecx + esi]
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x1c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
add ecx, dword [ebx*4 + 0x10142e8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [eax + 0x24]
sub ecx, ebx
mov ebx, dword [eax + 0x20]
xor ebp, ecx
xor ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x24]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
shr edx, 0x10
add ecx, ebx
movzx edx, dl
mov ebx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x2c]
xor ecx, ebx
mov ebx, dword [eax + 0x28]
xor esi, ecx
mov ecx, 0x20
sub ebx, esi
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x2c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
mov dword [esp + 0x20], edx
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
xor ecx, ebx
shr edx, 0x10
movzx edx, dl
sub ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x34]
xor ebp, ecx
mov ecx, dword [eax + 0x30]
lea ebx, [ecx + ebp]
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x34]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, edx
shr ebx, 0x10
mov dword [esp + 0x20], edx
movzx ebx, bl
add ecx, dword [ebx*4 + 0x10142e8]
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [eax + 0x3c]
sub ecx, ebx
mov ebx, dword [eax + 0x38]
xor esi, ecx
xor ebx, esi
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x3c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
mov dword [esp + 0x20], edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
add ecx, ebx
shr edx, 0x10
movzx edx, dl
mov ebx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x44]
xor ecx, ebx
mov ebx, dword [eax + 0x40]
xor ebp, ecx
sub ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x44]
shl ebx, cl
or edx, ebx
mov dword [esp + 0x20], edx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
shr edx, 0x18
xor ecx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
shr edx, 0x10
movzx edx, dl
sub ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x4c]
xor esi, ecx
mov ecx, dword [eax + 0x48]
lea ebx, [esi + ecx]
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x4c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
add ecx, dword [ebx*4 + 0x10142e8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [eax + 0x54]
sub ecx, ebx
mov ebx, dword [eax + 0x50]
xor ebp, ecx
xor ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x54]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
mov dword [esp + 0x20], edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
add ecx, ebx
shr edx, 0x10
movzx edx, dl
mov ebx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x5c]
xor ecx, ebx
mov ebx, dword [eax + 0x58]
xor esi, ecx
sub ebx, esi
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x5c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
xor ecx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
shr edx, 0x10
movzx edx, dl
sub ecx, dword [edx*4 + 0x10142e8]
xor ecx, ebp
mov ebp, ecx
mov edx, ecx
shr ebp, 8
shl ecx, 8
shl edx, 8
xor ebp, edx
and ebp, 0xff00ff
xor ebp, ecx
mov ecx, esi
shr ecx, 8
mov edx, esi
shl edx, 8
xor ecx, edx
mov ebx, ebp
and ecx, 0xff00ff
shl ebp, 0x10
shl esi, 8
xor ecx, esi
shr ebx, 0x10
or ebx, ebp
mov ebp, ecx
shl ecx, 0x10
shr ebp, 0x10
or ebp, ecx
mov ecx, dword [esp + 0x24]
mov edx, ebp
mov dword [ecx], ebx
mov dword [ecx + 4], edx
add ecx, 8
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x1c]
test ecx, ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebp
je 0x106f2c2
mov dword [esp + 0x1c], ecx
lea ebx, [ebx]
mov cl, byte [edi]
mov dl, byte [esp + 0x10]
xor dl, cl
mov bl, byte [esp + 0x11]
mov cl, byte [edi + 2]
mov byte [esp + 0x10], dl
mov dl, byte [edi + 1]
xor bl, dl
mov dl, byte [esp + 0x12]
xor dl, cl
mov cl, byte [edi + 4]
mov byte [esp + 0x12], dl
mov dl, byte [edi + 3]
mov byte [esp + 0x11], bl
mov bl, byte [esp + 0x13]
xor bl, dl
mov dl, byte [esp + 0x14]
xor dl, cl
mov cl, byte [edi + 6]
mov byte [esp + 0x14], dl
mov dl, byte [edi + 5]
mov byte [esp + 0x13], bl
mov bl, byte [esp + 0x15]
xor bl, dl
mov dl, byte [esp + 0x16]
xor dl, cl
mov cl, byte [esp + 0x17]
mov byte [esp + 0x16], dl
mov dl, byte [edi + 7]
xor cl, dl
mov edx, dword [esp + 0x10]
mov byte [esp + 0x17], cl
mov ecx, edx
shr ecx, 8
mov esi, edx
shl esi, 8
xor ecx, esi
and ecx, 0xff00ff
shl edx, 8
xor ecx, edx
mov ebp, ecx
shl ecx, 0x10
mov byte [esp + 0x15], bl
mov edx, dword [esp + 0x14]
mov esi, edx
shr ebp, 0x10
or ebp, ecx
mov ecx, edx
shr ecx, 8
shl esi, 8
xor ecx, esi
and ecx, 0xff00ff
shl edx, 8
xor ecx, edx
mov edx, dword [eax + 4]
mov esi, ecx
shl ecx, 0x10
shr esi, 0x10
or esi, ecx
mov ecx, dword [eax]
lea ebx, [ecx + esi]
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 4]
shl ebx, cl
add edi, 8
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
add ecx, dword [ebx*4 + 0x10142e8]
mov dword [esp + 0x20], edx
shr edx, 0x18
sub ecx, dword [edx*4 + 0x1013ee8]
mov edx, dword [eax + 0xc]
mov ebx, dword [eax + 8]
xor ebp, ecx
xor ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0xc]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
add ecx, ebx
shr edx, 0x10
movzx edx, dl
xor ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x14]
mov ebx, dword [eax + 0x10]
xor esi, ecx
sub ebx, esi
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x14]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
xor ecx, ebx
shr edx, 0x10
movzx edx, dl
mov ebx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x1c]
sub ecx, ebx
xor ebp, ecx
mov ecx, dword [eax + 0x18]
lea ebx, [ecx + ebp]
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x1c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
add ecx, dword [ebx*4 + 0x10142e8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [eax + 0x24]
sub ecx, ebx
mov ebx, dword [eax + 0x20]
xor esi, ecx
mov ecx, 0x20
xor ebx, esi
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x24]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
mov dword [esp + 0x20], edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
add ecx, ebx
shr edx, 0x10
movzx edx, dl
xor ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x2c]
mov ebx, dword [eax + 0x28]
xor ebp, ecx
sub ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x2c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
xor ecx, ebx
shr edx, 0x10
movzx edx, dl
mov ebx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x34]
sub ecx, ebx
xor esi, ecx
mov ecx, dword [eax + 0x30]
lea ebx, [ecx + esi]
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x34]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
add ecx, dword [ebx*4 + 0x10142e8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [eax + 0x3c]
sub ecx, ebx
mov ebx, dword [eax + 0x38]
xor ebp, ecx
xor ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x3c]
shl ebx, cl
or edx, ebx
mov dword [esp + 0x20], edx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
shr edx, 0x18
add ecx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
shr edx, 0x10
movzx edx, dl
xor ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x44]
mov ebx, dword [eax + 0x40]
xor esi, ecx
sub ebx, esi
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x44]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
xor ecx, ebx
shr edx, 0x10
movzx edx, dl
sub ecx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x4c]
xor ebp, ecx
mov ecx, dword [eax + 0x48]
lea ebx, [ecx + ebp]
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x4c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
add ecx, dword [ebx*4 + 0x10142e8]
mov dword [esp + 0x20], edx
shr edx, 0x18
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [eax + 0x54]
sub ecx, ebx
mov ebx, dword [eax + 0x50]
xor esi, ecx
xor ebx, esi
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x54]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
and ebx, 0xff
sub ecx, dword [ebx*4 + 0x1013ae8]
mov dword [esp + 0x20], edx
shr edx, 0x18
add ecx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
shr edx, 0x10
movzx edx, dl
mov ebx, dword [edx*4 + 0x10142e8]
mov edx, dword [eax + 0x5c]
xor ecx, ebx
mov ebx, dword [eax + 0x58]
xor ebp, ecx
sub ebx, ebp
mov ecx, 0x20
sub ecx, edx
mov edx, ebx
shr edx, cl
mov ecx, dword [eax + 0x5c]
shl ebx, cl
or edx, ebx
movzx ecx, dh
mov ecx, dword [ecx*4 + 0x10136e8]
mov ebx, edx
mov dword [esp + 0x20], edx
shr edx, 0x18
and ebx, 0xff
add ecx, dword [ebx*4 + 0x1013ae8]
mov ebx, dword [edx*4 + 0x1013ee8]
mov edx, dword [esp + 0x20]
xor ecx, ebx
shr edx, 0x10
movzx edx, dl
sub ecx, dword [edx*4 + 0x10142e8]
xor ecx, esi
mov edx, ecx
mov esi, ecx
shr edx, 8
shl ecx, 8
shl esi, 8
xor edx, esi
and edx, 0xff00ff
xor edx, ecx
mov ebx, edx
shl edx, 0x10
shr ebx, 0x10
or ebx, edx
mov ecx, ebp
shr ecx, 8
mov edx, ebp
shl edx, 8
xor ecx, edx
and ecx, 0xff00ff
shl ebp, 8
xor ecx, ebp
mov ebp, ecx
shl ecx, 0x10
shr ebp, 0x10
or ebp, ecx
mov ecx, dword [esp + 0x24]
mov dword [ecx], ebx
mov edx, ebp
mov dword [ecx + 4], edx
add ecx, 8
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x1c]
dec ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x1c], ecx
jne 0x106eda0
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx]
and ecx, 7
mov dword [eax + 0x68], ecx
mov edx, ecx
shr ecx, 2
mov esi, edi
lea edi, [eax + 0x60]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [eax + 0x68]
mov dword [eax + 0x78], ebx
mov dword [eax + 0x7c], ebp
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov ecx, 8
sub ecx, esi
add edx, ecx
mov dword [eax], edx
pop ebx
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 8
ret 0x10