Function at 0x497400
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x640040]
xor eax, esp
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x18]
push ebx
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x1c]
push esi
mov esi, dword [ebp + 8]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x20]
push edi
mov edi, dword [ebp + 0x10]
lea ecx, [esi + 0x1a8]
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], eax
mov byte [eax], 0
call fcn.00513560
test al, al
je 0x4974a5
mov ebx, dword [esp + 0x10]
mov dword [ebx], 0x6c
test edi, edi
je 0x497480
test esi, esi
je 0x497470
mov ecx, dword [esi + 0x1518]
test ecx, ecx
je 0x497470
add ecx, 0x28
jmp 0x497475
mov ecx, 0xf7c8
mov eax, ecx
mov byte [edi + 7], cl
shr eax, 8
mov byte [edi + 6], al
test esi, esi
je 0x49748e
mov eax, dword [esi + 0x1518]
test eax, eax
jne 0x497493
mov eax, 0xf7a0
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
mov byte [eax], 1
jmp 0x497b09
lea ecx, [esi + 0x1a8]
call fcn.00513430
test al, al
je 0x49751f
mov ebx, dword [esp + 0x10]
mov dword [ebx], 0x6c
test edi, edi
je 0x4974fa
push 0x69
lea eax, [edi + 3]
push eax
lea eax, [edi + 1]
push eax
call sub.VCRUNTIME140.dll_memmove
add dword [ebx], 0xfffffffe
add esp, 0xc
test esi, esi
je 0x4974ea
mov ecx, dword [esi + 0x1518]
test ecx, ecx
je 0x4974ea
add ecx, 0x26
jmp 0x4974ef
mov ecx, 0xf7ac
mov eax, ecx
mov byte [edi + 5], cl
shr eax, 8
mov byte [edi + 4], al
test esi, esi
je 0x497508
mov eax, dword [esi + 0x1518]
test eax, eax
jne 0x49750d
mov eax, 0xf786
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
mov byte [eax], 1
jmp 0x497b09
lea ecx, [esi + 0x1a8]
call fcn.00513350
test al, al
je 0x497584
mov ebx, dword [esp + 0x10]
mov dword [ebx], 0x6c
test edi, edi
je 0x49755f
test esi, esi
je 0x49754f
mov ecx, dword [esi + 0x1518]
test ecx, ecx
je 0x49754f
add ecx, 0x28
jmp 0x497554
mov ecx, 0xf7dc
mov eax, ecx
mov byte [edi + 7], cl
shr eax, 8
mov byte [edi + 6], al
test esi, esi
je 0x49756d
mov eax, dword [esi + 0x1518]
test eax, eax
jne 0x497572
mov eax, 0xf7b4
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
mov byte [eax], 1
jmp 0x497b09
lea ecx, [esi + 0x1a8]
call fcn.005131f0
test al, al
jne 0x497a8f
movzx eax, word [esi + 0x240]
mov ebx, 0x1f4
mov ecx, eax
mov edx, 0x500
test cx, cx
je 0x4975bd
cmp cx, bx
je 0x4975bd
cmp cx, dx
jne 0x4976a7
mov edx, 0x2481
cmp word [esi + 0x244], dx
je 0x497a8f
test cx, cx
je 0x4975e7
cmp cx, bx
je 0x4975e7
mov edx, 0x500
cmp ax, dx
jne 0x4976a7
movzx eax, word [esi + 0x244]
sub eax, 0x2500
je 0x49791e
sub eax, 0x10
je 0x49791e
sub eax, 1
je 0x49791e
mov ax, word [esi + 0x242]
mov edx, 0xff00
and ax, dx
mov edx, 0x2500
cmp ax, dx
je 0x49791e
mov edx, 0x500
test cx, cx
je 0x49763c
cmp cx, bx
je 0x49763c
cmp cx, dx
jne 0x4976a7
mov eax, 0x2640
mov dword [esp + 0x20], eax
cmp word [esi + 0x244], ax
je 0x497905
mov ax, word [esi + 0x242]
mov dword [esp + 0x1c], 0xfff0
and ax, word [esp + 0x1c]
cmp ax, word [esp + 0x20]
je 0x497905
test cx, cx
je 0x497680
cmp cx, bx
je 0x497680
cmp cx, dx
jne 0x4976a7
mov ecx, 0x2740
cmp word [esi + 0x244], cx
je 0x497905
mov ax, word [esi + 0x242]
and ax, word [esp + 0x1c]
cmp ax, cx
je 0x497905
lea ecx, [esi + 0x1a8]
call fcn.005149b0
test al, al
je 0x497740
mov ebx, dword [esp + 0x10]
mov dword [ebx], 0x6c
test edi, edi
je 0x49771b
test esi, esi
je 0x4976db
mov ecx, dword [esi + 0x1518]
test ecx, ecx
je 0x4976db
add ecx, 0x28
jmp 0x4976e0
mov ecx, 0xf528
mov eax, ecx
mov byte [edi + 6], cl
shr eax, 8
lea ebx, [edi + 0xa]
mov byte [edi + 7], al
mov edi, 0x18
mov al, byte [ebx + 1]
lea ebx, [ebx + 4]
mov dl, byte [ebx - 6]
mov cl, byte [ebx - 5]
mov byte [ebx - 6], al
mov al, byte [ebx - 4]
mov byte [ebx - 5], al
mov byte [ebx - 4], cl
mov byte [ebx - 3], dl
sub edi, 1
jne 0x4976f3
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x10]
test esi, esi
je 0x497729
mov eax, dword [esi + 0x1518]
test eax, eax
jne 0x49772e
mov eax, 0xf500
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
mov byte [eax], 1
jmp 0x497b09
lea ecx, [esi + 0x1a8]
call fcn.00514a30
test al, al
je 0x49787e
mov ebx, dword [esp + 0x10]
mov dword [ebx], 0x150
test edi, edi
je 0x49786d
imul eax, dword [ebp + 0x14], 0x150
lea esi, [edi + 0x24]
push 0xda
push esi
add eax, 0x3fff10
mov dword [esp + 0x28], eax
movzx eax, byte [esi]
mov dword [esp + 0x24], eax
lea eax, [edi + 0x26]
push eax
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x2c]
add esp, 0xc
add edx, 0x2c
mov ecx, edx
mov byte [edi + 0x25], dl
shr ecx, 0x10
mov eax, ecx
mov byte [edi + 0x23], cl
mov ecx, dword [esp + 0x1c]
shr eax, 8
mov byte [edi + 0x22], al
mov eax, edx
shr eax, 8
mov byte [esi], al
lea eax, [ecx*8]
sub eax, ecx
lea edx, [edx + eax*2]
mov dword [esp + 0x14], edx
test ecx, ecx
je 0x49783d
mov ecx, 0xfffffffc
lea ebx, [edi + 0x30]
sub ecx, edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
nop dword [eax]
mov eax, 0xf6
lea esi, [ebx + 6]
sub eax, ebx
sub eax, ecx
push eax
push ebx
push esi
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x20]
add esp, 0xc
mov ecx, edx
mov byte [ebx + 7], dl
shr ecx, 0x10
mov eax, ecx
mov byte [ebx + 5], cl
mov ecx, dword [esp + 0x28]
shr eax, 8
mov byte [ebx + 4], al
mov eax, edx
shr eax, 8
mov byte [esi], al
movzx eax, byte [ebx + 8]
mov dword [ebx], 0xffffffff
add ebx, 0xe
lea edx, [edx + eax*4]
add edx, 4
mov dword [esp + 0x14], edx
sub edi, 1
jne 0x4977e0
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x10]
sub edx, dword [esp + 0x20]
cmp edx, 0x150
jbe 0x49786d
lea eax, [edx - 0x150]
push eax
mov eax, dword [0x641a88]
push str.linearization_table_padding_caused_table_overflow_by__d_bytes
add eax, 0x32c
push 0x3ed
push eax
call fcn.004ec2c0
add esp, 0x10
imul eax, dword [ebp + 0x14], 0x150
sub eax, 0xf0
jmp 0x497b03
lea ecx, [esi + 0x1a8]
lea eax, [ecx + 0x58]
push eax
push 0x3f3
call fcn.005165b0
test al, al
je 0x4978b3
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
push ebx
push ecx
push dword [ebp + 0x14]
push edi
push dword [esp + 0x3c]
push esi
call fcn.00498970
jmp 0x497b09
mov eax, dword [0x641a88]
push 0x9cf
push str.c:DevjenkinsworkspaceiTools_for_IDMDeployer_V9.87_servermodbuslintable.cpp
add eax, 0x32c
push 0x587798
push eax
call fcn.004ec040
mov eax, dword [0x641a88]
push str.Unable_to_determine_MTB_table_attributes___Invalid_device
add eax, 0x32c
push 0x3e9
push eax
call fcn.004ec2c0
add esp, 0x1c
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
xor ecx, esp
call fcn.0055c86d
mov esp, ebp
pop ebp
ret 0x1c
push dword [ebp + 0x14]
mov ebx, dword [esp + 0x14]
push edi
push ecx
mov dword [ebx], 0x150
call fcn.00498360
jmp 0x497b03
mov eax, dword [esp + 0x10]
mov ebx, dword [ebp + 0x14]
mov dword [eax], 0x12c
test edi, edi
je 0x497a5c
mov eax, ebx
sub eax, 1
je 0x497958
sub eax, 1
je 0x49794e
sub eax, 1
jne 0x497958
mov dword [esp + 0x14], 0xc07d58
jmp 0x497960
mov dword [esp + 0x14], 0xc07c2c
jmp 0x497960
mov dword [esp + 0x14], 0xc07b00
movzx eax, byte [edi + 0x24]
lea esi, [edi + 0x24]
push 0xda
mov dword [esp + 0x24], eax
lea eax, [edi + 0x26]
push esi
push eax
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x20]
add esp, 0xc
add edx, 0x2c
mov ecx, edx
mov byte [edi + 0x25], dl
shr ecx, 0x10
mov eax, ecx
mov byte [edi + 0x23], cl
mov ecx, dword [esp + 0x20]
shr eax, 8
mov byte [edi + 0x22], al
mov eax, edx
shr eax, 8
mov byte [esi], al
lea eax, [ecx*8]
sub eax, ecx
lea edx, [edx + eax*2]
mov dword [esp + 0x1c], edx
test ecx, ecx
je 0x497a2c
mov ecx, 0xfffffffc
lea ebx, [edi + 0x30]
sub ecx, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
nop dword [eax + eax]
mov eax, 0xf6
lea esi, [ebx + 6]
sub eax, ebx
sub eax, ecx
push eax
push ebx
push esi
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x28]
add esp, 0xc
mov ecx, edx
mov byte [ebx + 7], dl
shr ecx, 0x10
mov eax, ecx
mov byte [ebx + 5], cl
mov ecx, dword [esp + 0x28]
shr eax, 8
mov byte [ebx + 4], al
mov eax, edx
shr eax, 8
mov byte [esi], al
movzx eax, byte [ebx + 8]
mov dword [ebx], 0xffffffff
add ebx, 0xe
lea edx, [edx + eax*4]
add edx, 4
mov dword [esp + 0x1c], edx
sub edi, 1
jne 0x4979d0
mov edi, dword [esp + 0x24]
mov ebx, dword [ebp + 0x14]
sub edx, dword [esp + 0x14]
cmp edx, 0x12c
jbe 0x497a5c
lea eax, [edx - 0x12c]
push eax
mov eax, dword [0x641a88]
push str.linearization_table_padding_caused_table_overflow_by__d_bytes
add eax, 0x32c
push 0x3ed
push eax
call fcn.004ec2c0
add esp, 0x10
sub ebx, 1
je 0x497a84
sub ebx, 1
je 0x497a79
sub ebx, 1
jne 0x497a84
mov ebx, dword [esp + 0x10]
mov eax, 0x7d58
jmp 0x497b03
mov ebx, dword [esp + 0x10]
mov eax, 0x7c2c
jmp 0x497b03
mov ebx, dword [esp + 0x10]
mov eax, 0x7b00
jmp 0x497b03
mov ebx, dword [esp + 0x10]
mov dword [ebx], 0x100
test edi, edi
je 0x497af0
test esi, esi
je 0x497ab0
mov ecx, dword [esi + 0x1518]
test ecx, ecx
je 0x497ab0
add ecx, 0x2a
jmp 0x497ab5
mov ecx, 0x472a
movzx ebx, byte [edi + 0x24]
mov eax, ecx
shr eax, 8
mov byte [edi + 0x22], al
mov byte [edi + 0x23], cl
lea edx, [ecx + ebx*8]
test ebx, ebx
je 0x497aec
lea ecx, [edi + 0x2f]
nop
mov eax, edx
mov byte [ecx], dl
shr eax, 8
lea ecx, [ecx + 8]
mov byte [ecx - 9], al
movzx eax, byte [ecx - 7]
lea edx, [edx + eax*4]
add edx, 4
sub ebx, 1
jne 0x497ad0
mov ebx, dword [esp + 0x10]
test esi, esi
je 0x497afe
mov eax, dword [esi + 0x1518]
test eax, eax
jne 0x497b03
mov eax, 0x4700
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
test edi, edi
je 0x497b92
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov ecx, dword [0x641a88]
lea eax, [esp + 0x30]
push 0
push eax
push 0xc3
push dword [esp + 0x38]
lea ecx, [ecx + 0x1f4]
call fcn.004fceb0
test al, al
je 0x497b6a
push 0xb
push 1
lea eax, [esp + 0x38]
push eax
push eax
call dword [sym.imp.OLEAUT32.dll_VariantTimeToDosDateTime]
test eax, eax
js 0x497b6a
cmp word [esp + 0x38], 0
lea eax, [esp + 0x30]
push eax
je 0x497b6f
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp 0x497b92
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov esi, dword [ebx]
mov ecx, 1
mov edx, 0xa5
cmp esi, ecx
jle 0x497b90
movzx eax, byte [edi + ecx]
inc ecx
xor edx, eax
cmp ecx, esi
jl 0x497b85
mov byte [edi], dl
mov ecx, dword [esp + 0x44]
mov al, 1
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0055c86d
mov esp, ebp
pop ebp
ret 0x1c