Function at 0x437050
Capabilities:
Encode data using xor
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov eax, dword [0x449554]
mov dword [esp + 0xc], eax
mov dword [esp + 0x60], 0xd9d8d7de
mov eax, 0xe6
mov ecx, 0x19
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x86]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0xd0
mov byte [esp + eax - 0x86], dl
inc eax
dec ecx
cmp eax, 0xea
jne 0x437080
mov eax, dword [esp + 0x60]
mov dword [esp + 8], eax
mov dword [esp + 4], 0xaaa9a84a
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx + 4]
mov ecx, edx
and ecx, 2
mov eax, edx
or eax, 2
imul eax, ecx
xor ecx, 2
mov edi, edx
and edi, 1
neg edi
and edi, ecx
add eax, edi
mov ecx, edx
xor ecx, 0xa5a66ccf
mov edi, eax
and edi, ecx
xor ecx, eax
lea ecx, [ecx + edi*2]
mov edi, ecx
and edi, esi
or ecx, esi
lea eax, [edi + edi]
not eax
add eax, edi
and eax, ecx
add al, 0x88
mov byte [esp + edx + 4], al
inc edx
cmp edx, 4
jne 0x4370c0
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov dword [esp + 0x14], 0xc97bc7a3
mov dword [esp + 0x18], 0xcd5fcb53
mov dword [esp + 0x1c], 0x3195cf5a
mov dword [esp + 0x20], 0x3570339f
mov dword [esp + 0x24], 0x399137a4
mov dword [esp + 0x28], 0x3d993bac
mov dword [esp + 0x2c], 0x21203f5b
xor esi, esi
xor ebx, ebx
movzx ecx, byte [esp + ebx + 0x14]
mov dword [esp + 0x10], ecx
mov eax, ebx
xor eax, 0x3ca4bb8a
mov edx, esi
and edx, 0x2a
sub edx, eax
mov eax, edx
and eax, ecx
mov ecx, eax
or ecx, 0xfd
inc ecx
mov edi, eax
and edi, 0xfffffffd
imul edi, ecx
mov ecx, eax
and ecx, 2
or eax, 2
imul eax, ecx
sub edi, eax
add edx, dword [esp + 0x10]
add edx, edi
add dl, 0x50
mov byte [esp + ebx + 0x14], dl
inc ebx
add esi, 2
cmp ebx, 0x1c
jne 0x437150
lea eax, [esp + 0x50]
lea ecx, [esp + 0x84]
lea edx, [esp + 0x14]
push eax
push dword [esp + 0xc]
push ecx
push dword [esp + 0x54]
push edx
push 0
call dword [esp + 0x24]
test eax, eax
jns 0x43725f
mov word [esp + 0x14], 0x8854
xor eax, eax
mov cl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x14]
mov edx, eax
xor edx, 0x56c501ef
lea edx, [edx + eax*2]
xor edx, esi
mov esi, edx
not esi
or esi, 0x49d7f087
add esi, edx
inc esi
mov edi, esi
and edi, 0xfffffffd
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
xor ebx, 2
imul ebx, edi
add esi, ebx
lea edi, [edx + edx]
and edi, 0x818a010e
neg edi
add edx, edi
add edx, 0x49d7f087
mov edi, esi
and edi, edx
xor esi, edx
lea edx, [esi + edi*2]
inc dl
mov byte [esp + eax + 0x14], dl
mov eax, 1
test cl, 1
mov ecx, 0
jne 0x4371e0
movzx eax, word [esp + 0x14]
mov word [esp + 0x84], ax
mov word [esp + 0x86], 0x3a
mov word [esp + 0x14], 0x2083
xor eax, eax
mov cl, 1
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x14]
lea edx, [eax - 1]
mov edi, 0x28
sub edi, eax
and edi, 0x28
and edx, 7
or edx, edi
lea ebx, [eax + 0x97]
and ebx, esi
xor edx, esi
xor edx, 0xb8
not ebx
and ebx, edx
add bl, 0x48
mov byte [esp + eax + 0x14], bl
mov eax, 1
test cl, 1
mov ecx, 0
jne 0x437270
movzx eax, word [esp + 0x14]
mov word [esp + 0x88], ax
mov word [esp + 0x8a], 0
mov dword [esp + 0x5c], 0x805167b3
mov dword [esp + 0x58], 0x64fa25cf
mov dword [esp + 0x54], 0xc0119cea
mov dword [esp + 0x50], 0xd420f34a
mov dword [esp + 4], 0
lea eax, [esp + 4]
push eax
push 0x44067c
push 1
push 0
push 0x44068c
call dword [0x440dbc]
test eax, eax
js 0x437834
mov dword [esp + 0x14], 0x8868b667
mov dword [esp + 0x18], 0x8c5f8a56
mov dword [esp + 0x1c], 0x804c8e21
mov dword [esp + 0x20], 0x845e8258
mov dword [esp + 0x24], 0x98758653
mov word [esp + 0x28], 0x9a99
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x14]
lea ecx, [eax + 0x47f5725d]
mov esi, 0x380a8da2
sub esi, eax
mov edi, esi
xor edi, 0x20000c92
or esi, 0x180a812d
and esi, edi
and ecx, 0x40645212
or ecx, esi
xor ecx, edx
mov edx, ecx
xor edx, 0x9f9ba16d
and ecx, 1
lea esi, [edx + edx]
or esi, 0xfd
lea ecx, [edx + ecx*2]
add ecx, esi
add cl, 0x19
mov byte [esp + eax + 0x14], cl
mov ecx, eax
not ecx
or ecx, 1
add ecx, eax
inc ecx
mov esi, ecx
and esi, 2
mov edx, ecx
or ecx, 2
imul ecx, esi
xor esi, 2
and edx, 0xfffffffd
imul edx, esi
lea esi, [eax + eax]
and esi, 2
neg esi
add eax, esi
inc eax
add eax, ecx
add eax, edx
cmp eax, 0x16
jb 0x437350
lea eax, [esp + 0x14]
push eax
call dword [0x440dd4]
mov edi, eax
mov eax, dword [esp + 4]
mov ecx, dword [eax]
lea edx, [esp + 0x4c]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
push edi
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x437823
push 0
push 0
push 3
push 3
push 0
push 0
push 0xa
push dword [esp + 0x68]
call dword [0x440dc8]
test eax, eax
js 0x437819
mov dword [esp + 0x14], 0x11a12f99
mov dword [esp + 0x18], 0x151413de
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xde
xor cl, byte [esp + eax + 0x14]
add cl, 0x10
mov byte [esp + eax + 0x14], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x437440
lea eax, [esp + 0x14]
push eax
call dword [0x440dd4]
mov esi, eax
mov dword [esp + 0x14], 0xb5f1b3c1
mov dword [esp + 0x18], 0xb9fdb7fa
mov dword [esp + 0x1c], 0xbdc8bbf9
mov dword [esp + 0x20], 0xa18abf9e
mov dword [esp + 0x24], 0xa5e2a382
mov dword [esp + 0x28], 0xa9e7a7d4
mov dword [esp + 0x2c], 0xad8cabe7
mov dword [esp + 0x30], 0xd1b9afd9
mov dword [esp + 0x34], 0xd587d3bc
mov dword [esp + 0x38], 0xd9a7d784
mov dword [esp + 0x3c], 0xdd95db98
mov dword [esp + 0x40], 0xc1b3df91
mov word [esp + 0x44], 0xc3c2
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xa2
xor cl, byte [esp + eax + 0x14]
add cl, 0xf0
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 0x32
jne 0x4374e0
lea eax, [esp + 0x14]
push eax
call dword [0x440dd4]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [ebx]
lea edx, [esp + 0x7c]
push edx
push 0
push 0x30
mov dword [esp + 0x18], eax
push eax
mov dword [esp + 0x20], esi
push esi
push ebx
call dword [ecx + 0x50]
test eax, eax
js 0x437807
mov dword [esp + 0x74], 0
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax]
lea edx, [esp + 0x74]
lea esi, [esp + 0x78]
push edx
push esi
push 1
push 0xffffffffffffffff
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x4377fd
cmp eax, 1
je 0x4377fd
cmp dword [esp + 0x74], 0
je 0x4377fd
lea esi, [esp + 0x60]
push esi
call dword [0x440de0]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x14], 0x79dd77c5
mov dword [esp + 0x18], 0x7dd57be8
mov dword [esp + 0x1c], 0x61cc7fdf
mov dword [esp + 0x20], 0x65f1632c
mov dword [esp + 0x24], 0x69ca67cb
mov dword [esp + 0x28], 0x6dfe6bcf
mov word [esp + 0x2c], 0x6f6e
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x46
xor dl, byte [esp + ecx + 0x14]
add dl, 0xd0
mov byte [esp + ecx + 0x14], dl
inc ecx
cmp ecx, 0x1a
jne 0x4375b0
mov ecx, dword [eax]
push 0
push 0
push esi
push 0
lea edx, [esp + 0x24]
push edx
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x4377ec
cmp word [esp + 0x60], 8
jne 0x4377ec
mov dword [esp + 0x80], edi
mov edi, dword [esp + 0x68]
movzx ecx, word [edi]
test cx, cx
je 0x437643
lea eax, [edi + 2]
xor edx, edx
jmp 0x43761c
inc edx
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x437645
cmp cx, 0x7f
jbe 0x437610
mov ebx, edx
movzx edx, cx
cmp edx, 0x7ff
ja 0x437636
mov edx, ebx
add edx, 2
jmp 0x437611
cmp cx, 0xffff
mov edx, ebx
je 0x437611
add edx, 3
jmp 0x437611
xor edx, edx
lea eax, [edx + 1]
push eax
mov ebx, edx
call fcn.00408bc0
add esp, 4
mov dword [esp + 8], eax
mov dword [esp + 0x48], ebx
test ebx, ebx
je 0x437788
movzx ecx, word [edi]
mov eax, dword [esp + 8]
test cx, cx
je 0x437788
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 8]
nop
nop
nop
nop
nop
movzx ebx, cx
lea esi, [edi + 2]
cmp bx, 0x7f
ja 0x4376a0
lea ecx, [eax + 1]
mov byte [eax], bl
mov edi, esi
jmp 0x437730
cmp ebx, 0x7ff
ja 0x4376c7
cmp edx, 2
jb 0x4376c7
mov ecx, ebx
shr ecx, 6
add cl, 0xc0
mov byte [eax], cl
and bl, 0x3f
or bl, 0x80
mov byte [eax + 1], bl
lea ecx, [eax + 2]
mov edi, esi
jmp 0x437730
mov ecx, ebx
and ecx, 0xfc00
cmp ecx, 0xd800
jne 0x437748
cmp edx, 4
jb 0x437748
movzx esi, word [edi + 2]
add edi, 4
shl ebx, 0xa
lea ecx, [ebx + esi]
add ecx, 0xfca02400
mov ebx, ecx
shr ebx, 0x12
add bl, 0xf0
mov byte [eax], bl
mov ebx, ecx
shr ebx, 0xc
and bl, 0x3f
or bl, 0x80
mov byte [eax + 1], bl
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [eax + 2], cl
mov ecx, esi
and cl, 0x3f
or cl, 0x80
mov ebx, ecx
lea ecx, [eax + 4]
mov byte [eax + 3], bl
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
add edx, eax
sub edx, ecx
mov eax, ecx
movzx ecx, word [edi]
test cx, cx
je 0x437788
test edx, edx
jne 0x437680
jmp 0x437788
movzx ecx, cx
cmp ecx, 0xdc00
jne 0x437757
mov edi, esi
jmp 0x437736
cmp edx, 3
mov edi, esi
jb 0x437784
mov ecx, ebx
shr ecx, 0xc
or cl, 0xe0
mov byte [eax], cl
mov ecx, ebx
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [eax + 1], cl
and bl, 0x3f
or bl, 0x80
lea ecx, [eax + 3]
mov byte [eax + 2], bl
jmp 0x437730
mov ecx, eax
jmp 0x437730
mov byte [eax], 0
mov edx, dword [esp + 8]
mov eax, dword [edx]
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 0x48]
mov eax, ecx
not eax
and eax, 4
and ecx, 0xfffffffb
sub ecx, eax
cmp ecx, 4
jb 0x4377d8
mov eax, dword [edx + 4]
mov dword [esp + 0x54], eax
mov eax, ecx
not eax
and eax, 4
and ecx, 0xfffffffb
sub ecx, eax
cmp ecx, 4
jb 0x4377d8
mov eax, dword [edx + 8]
mov dword [esp + 0x58], eax
and ecx, 0xfffffffc
cmp ecx, 4
je 0x4377d8
mov eax, dword [edx + 0xc]
mov dword [esp + 0x5c], eax
push edx
call fcn.00408bd0
add esp, 4
lea esi, [esp + 0x60]
mov edi, dword [esp + 0x80]
push esi
call dword [0x440ddc]
mov eax, dword [esp + 0x78]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [0x440dd8]
push dword [esp + 0x10]
call esi
push dword [esp + 0xc]
call esi
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push edi
call dword [0x440dd8]
mov eax, dword [esp + 4]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0xb65c016e
push dword [0x44854c]
call fcn.0043d220
add esp, 8
push 0
push 0
push 0
push 0
lea ecx, [esp + 0x24]
push ecx
push 0
push 0
lea ecx, [esp + 0xa0]
push ecx
call eax
test eax, eax
mov edi, dword [ebp + 8]
je 0x437871
mov eax, dword [esp + 0x14]
mov dword [esp + 0x50], eax
xor esi, esi
jmp 0x437897
add edi, 8
mov eax, esi
and eax, 1
xor esi, 1
lea esi, [esi + eax*2]
cmp esi, 4
jae 0x4379b7
mov eax, 0
test esi, esi
je 0x4378aa
cmp dword [esp + esi*4 + 0x50], 1
mov eax, esi
sbb eax, 0
mov dword [esp + 0x10], edi
mov eax, dword [esp + eax*4 + 0x50]
mov dword [esp + 0xc], eax
mov dword [esp + 0x60], 0x350e4b77
mov ecx, 0xb0fce822
mov edx, 0xdd
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x4f03183e]
mov edi, ecx
or edi, ebx
not ebx
or ebx, edx
and ebx, edi
mov edi, ebx
not edi
add ebx, 0x7818beef
or edi, ebx
and edi, 1
xor ebx, 1
lea ebx, [ebx + edi*2]
mov byte [esp + ecx + 0x4f03183e], bl
inc ecx
dec edx
cmp ecx, 0xb0fce826
jne 0x4378d0
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x14], 0xc8fcab33
mov dword [esp + 0x18], 0x27262524
mov edi, 0xf67adf
mov ebx, 0xf67a20
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx - 0xf67a0c]
mov edx, edi
xor edx, ebx
and edx, eax
xor edx, ebx
mov eax, edx
not eax
dec edx
and eax, 1
or edx, 1
add edx, eax
mov byte [esp + ebx - 0xf67a0c], dl
dec edi
inc ebx
cmp edi, 0xf67ad7
jne 0x437930
imul ecx, dword [esp + 0xc]
add ecx, dword [esp + 0x14]
mov dword [esp + esi*4 + 0x50], ecx
mov ebx, 0xfffffff7
push 0x10
push 9
mov edi, dword [esp + 0x18]
push edi
push ecx
call fcn.0041e880
add esp, 0x10
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [eax + ebx + 9], 0
lea ebx, [ebx + 1]
jne 0x437990
test ebx, ebx
je 0x437880
add eax, ebx
neg ebx
push ebx
push 0x30
push eax
call fcn.00408c50
add esp, 0xc
jmp 0x437880
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret